seit ein paar Tagen beschäftige ich mich mit PyCrypto und Blowfish. Bis gestern ohne allzu große Schwierigkeiten. Seit gestern versuche ich Blowfish mit dem Modus MODE_CTR zu betreiben was mir nicht gelingt. Für die später zu programmierende Anwendung könnte ich auf diesen Modus verzichten. Nur dieses "nicht wollen" nervt... :K .
Wie man Blowfish in diesen Modus betreibt dazu schweigt die Dokumentation leider eisern. So konnte ich bis jetzt nur rumprobieren. Ich bin jetzt so weit das keine Exceptions mehr ausgelöst werden, aber ob die Verschlüsselung richtig ist, kann ich nicht nachvollziehen den die Entschlüsselung funktioniert leider überhaupt nicht. Hier mein bisheriger Versuch:
Code: Alles auswählen
# Python 3.3
from Crypto.Cipher import Blowfish
from Crypto.Random import get_random_bytes
from Crypto.Util.number import bytes_to_long, long_to_bytes
MSG1 = "Hallo ihr Vögel.\n".encode()
PASSWORT = b'GeHeIm'
class MyCounter(object):
def __init__(self, nonce):
self.c = bytes_to_long(nonce)
def __call__(self):
self.c += 1
return long_to_bytes(self.c)
def CTR_1():
nonce = get_random_bytes(8)
cipher = Blowfish.new(PASSWORT, Blowfish.MODE_CTR, counter = MyCounter(nonce))
geheim = cipher.encrypt(MSG1)
print("Verschlüsselte Nachricht:\n")
print(geheim)
print("\nEndschlüsselte Nachricht:\n")
klartext = cipher.decrypt(geheim)
print(klartext)