Rumah >pembangunan bahagian belakang >Golang >Mengapa Go dan Pycrypto Menghasilkan Keputusan Penyulitan AES-CFB yang Berbeza?
Hasil Penyulitan AES-CFB yang tidak konsisten antara Go dan Pycrypto
Menggunakan penyulitan AES-CFB, keputusan yang berbeza diperolehi apabila dibandingkan antara Go dan Pycrypto . Untuk menyiasat percanggahan ini, kami menganalisis sampel kod yang disediakan.
Dalam Python, Crypto.Cipher.AES menggunakan MODE_CFB dengan vektor awal (IV) yang dinyatakan secara eksplisit. Sebaliknya, dalam Go, aes.NewCipher memerlukan penciptaan eksplisit sifir blok AES dan instantiasi CFBEncrypter atau CFBDecrypter seterusnya dengan IV yang diingini.
Perbezaan kritikal antara kedua-dua pelaksanaan terletak pada rawatan saiz segmennya. Pycrypto beroperasi pada segmen 8-bit, dikenali sebagai CFB8, manakala Go menggunakan segmen 16-bit secara lalai. Perbezaan ini membawa kepada perbezaan yang diperhatikan dalam hasil penyulitan.
Menyesuaikan Go to Python's CFB8 Approach
Untuk membenarkan Go menyahsulit teks sifir yang disulitkan oleh Pycrypto dengan tetapan CFB8, sumber kod untuk CFBDecrypter Go boleh diubah suai. Khususnya, kaedah XORKeyStream boleh disesuaikan untuk mengendalikan segmen 8-bit.
Pengubahsuaian ini akan membolehkan Pergi ke menyahsulitteks yang disulitkan menggunakan parameter AES-CFB8 khusus Pycrypto, memupuk kebolehoperasian antara kedua-dua bahasa dalam mengendalikan tugas penyulitan dan penyahsulitan.
Atas ialah kandungan terperinci Mengapa Go dan Pycrypto Menghasilkan Keputusan Penyulitan AES-CFB yang Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!