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中文网其他相关文章!