♻️ Moved shifting function to utils
This commit is contained in:
		
							parent
							
								
									fbf2c08ff7
								
							
						
					
					
						commit
						5fd431cef1
					
				| 
						 | 
				
			
			@ -1,3 +1,6 @@
 | 
			
		|||
from utils import CipherUtils
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def encrypt_text(cleartext: str = 'Bitcoin', incrementation: int = 13):
 | 
			
		||||
    """
 | 
			
		||||
    This method encrypts a text by shifting each letter by the value of incrementation
 | 
			
		||||
| 
						 | 
				
			
			@ -30,28 +33,11 @@ def shift_text(cleartext: str, incrementation: int):
 | 
			
		|||
    shifted_text = ''
 | 
			
		||||
 | 
			
		||||
    for char in cleartext:
 | 
			
		||||
        shifted_text += increment_char(char, incrementation)
 | 
			
		||||
        shifted_text += CipherUtils.shift_char(char, incrementation)
 | 
			
		||||
 | 
			
		||||
    return shifted_text
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def increment_char(char, incrementation: int = 1):
 | 
			
		||||
    """
 | 
			
		||||
    This method shifts one char by the value of incrementation
 | 
			
		||||
 | 
			
		||||
    :param char: Char to be shifted
 | 
			
		||||
    :param incrementation: How much the char should be shifted
 | 
			
		||||
    :return: Shifted letter
 | 
			
		||||
    """
 | 
			
		||||
    # converting character to byte
 | 
			
		||||
    char_in_bytes = bytes(char, 'utf-8')[0]
 | 
			
		||||
    if char_in_bytes + incrementation >= 91 and char_in_bytes < 91 \
 | 
			
		||||
            or char_in_bytes + incrementation >= 123:  # z -> 122 | 90 -> Z so go backwards
 | 
			
		||||
        new_char_in_bytes = bytes([char_in_bytes - (26 - incrementation)])
 | 
			
		||||
    else:
 | 
			
		||||
        new_char_in_bytes = bytes([char_in_bytes + incrementation])
 | 
			
		||||
 | 
			
		||||
    return str(new_char_in_bytes)[2]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def brute_force_example(cleartext: str = 'Bitcoin', incrementation: int = 7):
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -27,7 +27,7 @@ GERMAN_FREQUENCY_PROFILE = [
 | 
			
		|||
    0.0003,
 | 
			
		||||
    0.0004,
 | 
			
		||||
    0.0113
 | 
			
		||||
	]
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def calculate_frequency(text: str, fancy_printing: bool = False):
 | 
			
		||||
| 
						 | 
				
			
			@ -74,6 +74,25 @@ def transform_invalid_chars(input: str) -> str:
 | 
			
		|||
    return res
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def shift_char(char, incrementation: int = 1):
 | 
			
		||||
    """
 | 
			
		||||
    This method shifts one char by the value of incrementation
 | 
			
		||||
 | 
			
		||||
    :param char: Char to be shifted
 | 
			
		||||
    :param incrementation: How much the char should be shifted
 | 
			
		||||
    :return: Shifted letter
 | 
			
		||||
    """
 | 
			
		||||
    # converting character to byte
 | 
			
		||||
    char_in_bytes = bytes(char, 'utf-8')[0]
 | 
			
		||||
    if char_in_bytes + incrementation >= 91 and char_in_bytes < 91 \
 | 
			
		||||
            or char_in_bytes + incrementation >= 123:  # z -> 122 | 90 -> Z so go backwards
 | 
			
		||||
        new_char_in_bytes = bytes([char_in_bytes - (26 - incrementation)])
 | 
			
		||||
    else:
 | 
			
		||||
        new_char_in_bytes = bytes([char_in_bytes + incrementation])
 | 
			
		||||
 | 
			
		||||
    return str(new_char_in_bytes)[2]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
if __name__ == '__main__':
 | 
			
		||||
    print(
 | 
			
		||||
        calculate_frequency('Hier den Text eingeben, für den die Wahrscheinlichkeiten berechnet werden sollen', True))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user