Ich habe bereits ein funktionierendes Programm, aber das einzige, was nicht funktioniert, ist die Funktion decrypt_file (), die ich habe. Ich kann den verschlüsselten Text immer noch aus der Datei kopieren und ihn in meine Funktion decrypt () einfügen, damit er funktioniert, aber wenn ich versuche, meine angenommene praktische Funktion decrypt_file () zu verwenden, wird ein Fehler ausgegeben. Jetzt weiß ich 99.999% sicher, dass meine encrypt () - und decrypt () - Funktionen in Ordnung sind, aber es gibt etwas mit der Byte- und Zeichenfolgenkonvertierung, wenn ich die Textdatei lese und kodiere, die einen Fehler auslöst; Ich kann das Auflegen nicht finden. Bitte helfen Sie!
Mein Programm:
%Vor%Die Textdatei, die ich verschlüsselt habe:
%Vor% Mein Fehler beim Versuch decrypt_file
:
Wenn ich Zeile 45 durch plaintext += ((str(bytes([x])))) * x
ersetze, ist das der Fehler, den ich bekomme:
Ich habe mir Ihren Code genauer angesehen und festgestellt, dass es mehrere Probleme damit gab. Die erste ist, dass die Krypto mit Bytes funktioniert, nicht mit Text. Daher ist es besser, die Daten als Byte-String zu speichern. Dies geschieht einfach durch Setzen eines 'b' Charakters in den Modus. Auf diese Weise können Sie alle Codierungs- und Byte-Konvertierungen loswerden, die Sie versuchen wollten.
Ich habe den gesamten Code auch mit neueren Python-Idiomen umgeschrieben. Hier ist es.
%Vor%In Python 3 (den Sie eindeutig verwenden) ist der Standardmodus für geöffnete Dateien Text, nicht binär. Wenn Sie aus der Datei lesen, erhalten Sie Zeichenfolgen statt Bytearrays. Das passt nicht zur Verschlüsselung.
In Ihrem Code sollten Sie ersetzen:
%Vor%mit:
%Vor%Das gleiche gilt für das Öffnen der Datei zum Schreiben. An diesem Punkt können Sie all die verschiedenen Vorkommen loswerden, bei denen Sie von String in Binär konvertieren und umgekehrt.
Zum Beispiel kann das weggehen:
%Vor%Tags und Links python file encryption aes pycrypto