」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 為什麼我的 Go 中的 AES ECB 加密函數不回傳任何資料?

為什麼我的 Go 中的 AES ECB 加密函數不回傳任何資料?

發佈於2025-01-17
瀏覽:580

Why is my AES ECB Encryption Function in Go Not Returning Any Data?

Go 中的AES ECB 加密:故障排除和實施

您在Go 中實施AES ECB 加密的初次嘗試遇到了一些障礙。這裡有一個全面的解釋和修改後的程式碼解決方案:

PKCS5 Padding

PKCS5 padding對於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
}

此程式碼將密文分割成區塊,解密每個區塊,並將解密的區塊附加到明文緩衝區。

實現問題

The修改後的 ASECB 函數似乎沒有回傳任何資料。確保您正確地呼叫它並傳入加密的密文作為參數。

重要安全說明

值得注意的是,ECB 模式在加密上並不安全。重複的明文區塊總是產生相同的加密區塊,使其容易受到某些攻擊。強烈建議使用更安全的操作模式,例如 CBC、CTR 或 GCM,以實現強大的加密。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3