0

这是对这个问题的跟进。

PHP AES 加密/解密

我想知道IV。正如我所看到的,为分别解密和加密创建了一个随机 IV。并且它不会与要解密的数据一起传递。

如果我没记错的话,IV 很可能是公开的,并与加密数据一起传输。然而,它应该是随机的,而不是一直重复使用(例如取一系列零)。

但是要成功解密,必须使用已用于加密的相同 IV。

生成新的随机 IV 时,解密功能如何正常工作?

它确实有效,我测试了它......

4

1 回答 1

2

该问题 ( ) 中使用的模式忽略了通过的 IV(如本问题MCRYPT_MODE_ECB中所指出的那样)。

“ECB 不执行块之间的链接,因此无法使用 IV。mcrypt 对所有模块使用相同的 APi。IV 被 ECB 简单地忽略,因为 ECB 模块具有以下定义为int _has_iv() { return 0; }

来自MSDN

重要提示:不推荐使用此模式,因为它为多种安全漏洞打开了大门。如果要加密的明文包含大量重复,密文一次破一个块是可行的。也可以使用块分析来确定加密密钥。此外,活跃的对手可以在不检测的情况下替换和交换单个块,这允许将块保存并在其他点插入流中而不会检测到。

于 2013-10-21T08:04:16.683 回答