【发布时间】:2016-08-03 14:18:27
【问题描述】:
在 AES 中加密数据时,我很难理解 IV(初始化向量)的正确使用。
确切地说,我不确定将随机生成的 IV 存储在哪里:在我的脚本中,数据将被加密,然后保存到文件中,然后程序将终止。在下一个会话期间,必须解密先前保存的数据。如果我对 IV 的理解是正确的,我必须使用与加密相同的 IV 进行解密(但每个加密过程都使用另一个随机 IV)。 因此,我必须将 IV 存储在某处 - 有些人建议将其添加到加密数据之前,但如果我做对了,这在我的情况下将不起作用,因为我需要 IV 以便能够解密它。
这是正确的还是我误解了什么?我想避免在一些未加密的纯文本设置文件或其他东西中保存加密/散列的密钥和 IV(即使是散列本身)。
【问题讨论】:
-
“有些人建议将其添加到加密数据之前,但如果我做对了,那在我的情况下就行不通了” - 我认为错误就在这里。这正是它必须工作的原因。您可能忘记阅读密文前面的 IV 并跳过它进行解密。
-
我认为这就是重点。我假设 IV 将集成在密文中 - 正如您所写的那样,情况并非如此:它显然是在密文生成之后 预先添加的,然后可以在解密的情况下读取(和拆分) .整个文件保存到的文件类型显然没有改变(例如 txt 或 xml),这使得读取 IV 变得容易。我对在阅读的教程中遇到的 .enc 文件类型感到困惑。我认为在解密之前读取 .enc 文件是不可能的。
标签: python encryption aes initialization-vector