Penyulitan ECB AES dalam Go: Penyelesaian Masalah dan Pelaksanaan
Percubaan awal anda untuk melaksanakan penyulitan AES ECB dalam Go menghadapi beberapa sekatan jalan. Berikut ialah penjelasan komprehensif dan penyelesaian kod yang disemak semula:
Padding PKCS5
Padding PKCS5 adalah penting untuk penyulitan AES dalam mod ECB. Ia memastikan bahawa teks biasa mempunyai panjang yang merupakan gandaan saiz blok. Algoritma PKCS5Pad anda yang sedia ada nampaknya berfungsi dengan betul.
Mod Penyulitan
Pakej Go AES tidak menyediakan mod "ECB" secara eksplisit tetapan. Walau bagaimanapun, anda boleh mencontohinya dengan menyahsulit data dalam blok bersaiz tetap:
Fungsi Disulitkan Disemak
func AESECB(ciphertext []byte) []byte { cipher, _ := aes.NewCipher([]byte(KEY)) bs := aes.BlockSize if len(ciphertext)%bs != 0 { panic("Need a multiple of the block size") } plaintext := make([]byte, len(ciphertext)) for len(plaintext) > 0 { cipher.Decrypt(plaintext, ciphertext) plaintext = plaintext[bs:] ciphertext = ciphertext[bs:] } return plaintext }
Kod ini membahagikan teks sifir kepada blok, menyahsulit setiap blok dan tambahkan blok yang dinyahsulit pada penimbal plaintext.
Isu Pelaksanaan
Fungsi AESECB yang disemak nampaknya tidak mengembalikan sebarang data. Pastikan anda memanggilnya dengan betul dan menghantar teks sifir yang disulitkan sebagai hujah.
Nota Keselamatan Penting
Perlu diperhatikan bahawa mod ECB tidak selamat dari segi kriptografi. Blok teks biasa berulang sentiasa menghasilkan blok disulitkan yang sama, menjadikannya terdedah kepada serangan tertentu. Anda amat disyorkan untuk menggunakan mod operasi yang lebih selamat, seperti CBC, CTR atau GCM, untuk penyulitan yang teguh.
Atas ialah kandungan terperinci Mengapakah Fungsi Penyulitan ECB AES saya dalam Pergi Tidak Mengembalikan Sebarang Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!