Heim >Backend-Entwicklung >Golang >Warum liefern Go und Pycrypto unterschiedliche AES-CFB-Verschlüsselungsergebnisse?
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!