1

根据 CWE-329 NON-Random IV 允许字典攻击的可能性。但是,在 AES 加密示例中,golang 文档使用非随机 IV:

ciphertext := make([]byte, aes.BlockSize+len(plaintext))
iv := ciphertext[:aes.BlockSize]

这个实现是安全的还是我应该使用随机函数来获取我的 IV?

4

1 回答 1

2

它是安全的,因为 IV 是从/dev/urandom默认情况下由操作系统提供的加密安全伪随机数生成器 (CSPRNG) 填充的。从ExampleNewCBCEncrypter功能:

iv := ciphertext[:aes.BlockSize]
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
    panic(err)
}
于 2015-09-17T15:28:35.757 回答