Go 中的 AES ECB 加密:故障排除和實作
您最初嘗試在 Go 中實現 AES ECB 加密遇到了一些障礙。以下是全面的解釋和修改後的程式碼解決方案:
PKCS5 填充
PKCS5 填充對於 ECB 模式下的 AES 加密至關重要。它確保明文的長度是區塊大小的倍數。您現有的 PKCS5Pad 演算法似乎運作正常。
加密模式
Go AES 套件未明確提供「ECB」模式環境。但是,您可以透過解密固定大小區塊中的資料來模擬它:
修訂的加密函數
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 }
此程式碼將密文分成區塊,解密每個區塊區塊,並將解密的區塊附加到明文緩衝區。
實作問題
修訂後的ASECB函數似乎沒有回傳任何資料。確保您正確地呼叫它並傳入加密的密文作為參數。
重要安全說明
值得注意的是,ECB 模式在加密上並不安全。重複的明文區塊總是產生相同的加密區塊,使其容易受到某些攻擊。強烈建議使用更安全的操作模式,例如 CBC、CTR 或 GCM,以實現強大的加密。
以上是為什麼我的 Go 中的 AES ECB 加密函數不回傳任何資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!