Heim >Backend-Entwicklung >Golang >Warum liefern Go und Pycrypto unterschiedliche AES-CFB-Verschlüsselungsergebnisse?

Warum liefern Go und Pycrypto unterschiedliche AES-CFB-Verschlüsselungsergebnisse?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-13 11:11:10224Durchsuche

Why Do Go and Pycrypto Produce Different AES-CFB Encryption Results?

Inkonsistente AES-CFB-Verschlüsselungsergebnisse zwischen Go und Pycrypto

Unter Verwendung der AES-CFB-Verschlüsselung werden beim Vergleich zwischen Go und Pycrypto unterschiedliche Ergebnisse erzielt . Um diese Diskrepanz zu untersuchen, analysieren wir die bereitgestellten Codebeispiele.

In Python verwendet Crypto.Cipher.AES MODE_CFB mit einem explizit angegebenen Anfangsvektor (IV). Umgekehrt erfordert aes.NewCipher in Go die explizite Erstellung einer AES-Blockverschlüsselung und die anschließende Instanziierung von CFBEncrypter oder CFBDecrypter mit der gewünschten IV.

Ein entscheidender Unterschied zwischen den beiden Implementierungen liegt in ihrer Behandlung der Segmentgröße. Pycrypto arbeitet mit 8-Bit-Segmenten, bekannt als CFB8, während Go standardmäßig 16-Bit-Segmente verwendet. Dieser Unterschied führt zu der beobachteten Divergenz bei den Verschlüsselungsergebnissen.

Anpassung von Go an Pythons CFB8-Ansatz

Damit Go von Pycrypto mit CFB8-Einstellungen verschlüsselten Chiffretext entschlüsseln kann, die Quelle Der Code für Gos CFBDecrypter kann geändert werden. Insbesondere kann die XORKeyStream-Methode angepasst werden, um 8-Bit-Segmente zu verarbeiten.

Diese Änderung würde es Go ermöglichen, Chiffriertext zu entschlüsseln, der mit den spezifischen AES-CFB8-Parametern von Pycrypto verschlüsselt wurde, und so die Interoperabilität zwischen den beiden Sprachen bei der Handhabung von Verschlüsselungs- und Entschlüsselungsaufgaben fördern.

Das obige ist der detaillierte Inhalt vonWarum liefern Go und Pycrypto unterschiedliche AES-CFB-Verschlüsselungsergebnisse?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn