Heim >Backend-Entwicklung >Golang >Warum erzeugen meine Go- und PyCrypto-AES-CFB-Implementierungen unterschiedliche Chiffretexte?
Unterschiedliche Ergebnisse in Go und Pycrypto mit AES-CFB
Diese Frage ergibt sich aus der Notwendigkeit, eine Go-Anwendung in eine bestehende Python-Codebasis zu integrieren das PyCrypto zur Verschlüsselung nutzt. Das Problem tritt auf, wenn die Python- und Go-Implementierungen der AES-CFB-Verschlüsselung unterschiedliche Chiffretexte erzeugen.
Python-Beispiel:
Go-Beispiel:
In Go verwendet die NewCFBEncrypter-Funktion 16-Bit-Segmente von Standardmäßig verwendet PyCrypto in Python 8-Bit-Segmente (CFB8). Um diese Diskrepanz zu beheben und es Go zu ermöglichen, mit den PyCrypto-Einstellungen verschlüsselten Chiffretext zu entschlüsseln, muss die Go-Implementierung geändert werden, um CFB8 zu unterstützen.
Lösung:
Untersuchungen zeigen, dass Go's Der Quellcode von CFBDecrypter und CFBEncrypter kann problemlos an die Unterstützung von CFB8 angepasst werden. Die Änderung beinhaltet die Änderung der Segmentgröße in den folgenden Zeilen:
Originalcode:
Geänderter Code:
Durch die Implementierung dieser Änderung wird Go CFB8 unterstützen und in der Lage sein, Chiffretext zu entschlüsseln, der mit der Python-Implementierung verschlüsselt wurde Einstellungen.
Das obige ist der detaillierte Inhalt vonWarum erzeugen meine Go- und PyCrypto-AES-CFB-Implementierungen unterschiedliche Chiffretexte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!