Merge remote-tracking branch 'origin/master'
This commit is contained in:
commit
e5e21cae3b
|
@ -1,33 +0,0 @@
|
||||||
def encrypt_text(cleartext: str = 'Bitcoin', incrementation: int = 13):
|
|
||||||
encrypted_text = ''
|
|
||||||
|
|
||||||
for char in cleartext:
|
|
||||||
encrypted_text += increment_char(char, incrementation)
|
|
||||||
|
|
||||||
return encrypted_text
|
|
||||||
|
|
||||||
|
|
||||||
def increment_char(char, incrementation: int = 1):
|
|
||||||
# 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 decrypt_text(encrypted_text: str = 'Ovgpbva', incrementation: int = 13):
|
|
||||||
cleartext = ''
|
|
||||||
|
|
||||||
for char in encrypted_text:
|
|
||||||
cleartext += increment_char(char, 26 - incrementation)
|
|
||||||
|
|
||||||
return cleartext
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
print(encrypt_text())
|
|
||||||
print(decrypt_text())
|
|
75
chapter_one/Verschiebe-Chiffre.py
Normal file
75
chapter_one/Verschiebe-Chiffre.py
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
def encrypt_text(cleartext: str = 'Bitcoin', incrementation: int = 13):
|
||||||
|
"""
|
||||||
|
This method encrypts a text by shifting each letter by the value of incrementation
|
||||||
|
|
||||||
|
:param cleartext: The secret message to encrypt
|
||||||
|
:param incrementation: How much the letters should be shifted
|
||||||
|
:return: Encrypted text
|
||||||
|
"""
|
||||||
|
return shift_text(cleartext, (incrementation % 26)) # '%' to repeat after 26 with 0
|
||||||
|
|
||||||
|
|
||||||
|
def decrypt_text(encrypted_text: str = 'Ovgpbva', incrementation: int = 13):
|
||||||
|
"""
|
||||||
|
This method decrypts a text by shifting each letter by the value of incrementation
|
||||||
|
|
||||||
|
:param encrypted_text: The encrypted secret message to decrypt
|
||||||
|
:param incrementation: How much the letters should be shifted
|
||||||
|
:return: Decrypted text
|
||||||
|
"""
|
||||||
|
return shift_text(encrypted_text, 26 - (incrementation % 26)) # '%' to repeat after 26 with 0
|
||||||
|
|
||||||
|
|
||||||
|
def shift_text(cleartext: str, incrementation: int):
|
||||||
|
"""
|
||||||
|
This method shifts every letter of a string by the value of incrementation
|
||||||
|
:param cleartext: The string to be shifted
|
||||||
|
:param incrementation: How much the letters should be shifted
|
||||||
|
:return: Shifted text
|
||||||
|
"""
|
||||||
|
shifted_text = ''
|
||||||
|
|
||||||
|
for char in cleartext:
|
||||||
|
shifted_text += increment_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):
|
||||||
|
"""
|
||||||
|
This is an example of how to bruteforce an encrypted text. (Encrypted with Letter-Shifting)
|
||||||
|
|
||||||
|
:param cleartext: The secret message to encrypt and decrypt during bruteforcing
|
||||||
|
:param incrementation: How much the letters should be shifted
|
||||||
|
"""
|
||||||
|
encrypted_text = encrypt_text(cleartext, incrementation=incrementation)
|
||||||
|
|
||||||
|
for x in range(26):
|
||||||
|
if cleartext == decrypt_text(encrypted_text, incrementation=x):
|
||||||
|
print(f'Text was shifted by {x} letters.')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
print(encrypt_text())
|
||||||
|
print(decrypt_text())
|
||||||
|
|
||||||
|
brute_force_example()
|
Loading…
Reference in New Issue
Block a user