【发布时间】:2017-03-14 03:39:55
【问题描述】:
我有一个使用 crypto/aes 加密和解密明文的 go 脚本。
https://play.golang.org/p/le_-uuzWN4
我希望这个脚本可以在不同的机器上使用并生成相同的加密文本。我认为通过使用自定义 IV,无论在哪里,它都会产生一致的加密。 现在它在 go playground 和 https://repl.it/languages/go 上产生不同的结果@
是否有可能产生一致的加密,或者由于内部实现(如加密盐等)而总是不同的。
另外,IV到底是什么,我仍然对此感到困惑。文档并没有真正解释它是什么
【问题讨论】:
-
IV 是随机数。重复使用 IV 会破坏其目的,并且可能会破坏您的加密。
-
现在更有意义了。这是否意味着无法生成相同的一致加密?
-
不安全,您为什么要这样做?产生可预测的输出违背了加密它的目的。这听起来像你有一个不同的问题要解决。您是否正在寻找加密哈希函数?
-
我认为您可以使用用户名的哈希来生成可预测的 IV,但我觉得单独使用哈希会更安全。
-
如果您在 CFB 模式下加密,请勿重复使用 IV。正如 JimB 所说,当密钥保持不变时,它只能使用一次。如果 IV 被重复使用,那么您正在创建一个 multipad,攻击者只能通过了解明文的某些属性来使用它来恢复完整的明文。
标签: encryption go aes