这种加密/解密功能如何工作?

时间:2013-10-20 11:36:05

标签: php security aes mcrypt crypt

这是对这个问题的跟进。

PHP AES encrypt / decrypt

我想知道IV。正如我所看到的那样,随机IV被创建用于解密和单独加密。并且它不会与要解密的数据一起传递。

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

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

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

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

1 个答案:

答案 0 :(得分:2)

该问题中使用的模式(MCRYPT_MODE_ECB)忽略传递的IV(如this question中所述)。

  

“ECB不执行块之间的链接,因此无法使用IV.mcrypt对所有模块使用相同的APi。对于ECB,IV被忽略,因为ECB模块具有定义为{{1}的以下功能}

来自MSDN

  

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