Rumah >pembangunan bahagian belakang >Golang >Mengapa Go dan Pycrypto Menghasilkan Keputusan Penyulitan AES-CFB yang Berbeza?

Mengapa Go dan Pycrypto Menghasilkan Keputusan Penyulitan AES-CFB yang Berbeza?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-13 11:11:10230semak imbas

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

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn