为了账号安全,请及时绑定邮箱和手机立即绑定

Golang 加密:加密文件不以 IV 为前缀

Golang 加密:加密文件不以 IV 为前缀

Go
幕布斯6054654 2022-03-07 16:16:33
我在 cipher.NewOFB 中使用 IV,但我的加密文件永远不会以它为前缀。我遵循了https://golang.org/pkg/crypto/cipher/上的 golang 示例,但似乎无法弄清楚为什么不考虑前缀。有谁看到问题是什么?func generateRandomIV(length int) []byte {    iv := make([]byte, aes.BlockSize)    if _, err := io.ReadFull(rand.Reader, iv); err != nil {        panic(err)    }    return iv}func encryptFile(filename, keystring string) error {    readFile, err := os.Open(filename)    iv := generateRandomIV(aes.BlockSize)    outFile, err := os.OpenFile(filename+".enc", os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)    if err != nil {        panic(err)    }    defer readFile.Close()    defer outFile.Close()    key := []byte(keystring)    block, err := aes.NewCipher(key)    if err != nil {        panic(err)    }    fmt.Println("IV:", iv)    writer := &cipher.StreamWriter{S: cipher.NewOFB(block, iv), W: outFile}    if _, err := io.Copy(writer, readFile); err != nil {        return err    }    return nil}
查看完整描述

1 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

自己添加 IV 前缀或预先共享 IV。如果您为其添加前缀,您将删除它并将其应用于解密。

如何共享 IV 不是加密标准的一部分,它是开发人员的选择。前缀 IV 很常见,但不是必需的,也不是唯一的方法,但它是一个不错的选择。


查看完整回答
反对 回复 2022-03-07
  • 1 回答
  • 0 关注
  • 169 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信