Diskrepanz in den AES-CFB-Verschlüsselungsergebnissen zwischen Go und Pycrypto
Bei dem Versuch, eine neue Go-Anwendung in eine vorhandene Python-Codebasis zu integrieren, Ein Benutzer stößt auf Diskrepanzen in den von den beiden Sprachen erzeugten Chiffretexten. Diese Ungleichheit entsteht insbesondere bei der Implementierung der AES-CFB-Verschlüsselung.
Das Problem ergibt sich aus einem Unterschied in der CFB-Segmentgröße, die von den einzelnen Sprachen verwendet wird. Pycrypto verwendet eine Segmentgröße von 8 Bit (CFB8), während Go für diese Konfiguration keine native Unterstützung bietet. Infolgedessen unterscheiden sich die von Go und Pycrypto generierten Chiffretexte, sodass sie gegenseitig nicht entzifferbar sind.
Die Untersuchung des Go-Codes zeigt, dass die Klassen CFBDecrypter und CFBEncrypter möglicherweise durch Änderung des zugrunde liegenden Quellcodes an die Unterstützung von CFB8 angepasst werden könnten. Dieser Ansatz würde es Go-Anwendungen ermöglichen, Chiffretexte, die mit den CFB8-Einstellungen von Pycrypto verschlüsselt wurden, nahtlos zu entschlüsseln.
Geänderter Go-Code:
package main import ( "fmt" "crypto/cipher" "crypto/aes" "encoding/hex" ) // encrypt func main() { payload, err1 := hex.DecodeString("abababababababababababababababababababababababababababababababab") password, err2 := hex.DecodeString("0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF0123456789ABCDEF") iv, err3 := hex.DecodeString("00000000000000000000000000000000") if err1 != nil { fmt.Printf("error 1: %v", err1) return } if err2 != nil { fmt.Printf("error 2: %v", err2) return } if err3 != nil { fmt.Printf("error 3: %v", err3) return } aesBlock, err4 := aes.NewCipher(password) cfb8Decrypter := cipher.NewCFB8Decrypter(aesBlock, iv) cfb8Decrypter.XORKeyStream(payload, payload) fmt.Printf("%v\n", hex.EncodeToString(payload)) // should output dbf6b1877ba903330cb9cf0c4f530d40bf77fe2bf505820e993741c7f698ad6b }
Schlussfolgerung:
Durch die Anpassung der CFBDecrypter- und CFBEncrypter-Klassen von Go an die Unterstützung Mit CFB8 kann der Benutzer sicherstellen, dass Go-Anwendungen mit den AES-CFB8-Einstellungen von Pycrypto verschlüsselte Chiffretexte effektiv entschlüsseln können, wodurch die Lücke zwischen den beiden Sprachen geschlossen und eine nahtlose Integration zwischen der Go-Anwendung und der vorhandenen Python-Codebasis ermöglicht wird.
Das obige ist der detaillierte Inhalt vonWarum unterscheiden sich die Ergebnisse der AES-CFB-Verschlüsselung von Go und Pycrypto?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!