当前位置:  开发笔记 > 程序员 > 正文

我应该使用初始化向量(IV)和我的加密吗?

如何解决《我应该使用初始化向量(IV)和我的加密吗?》经验,为你挑选了3个好方法。

是否建议我使用初始化向量来加密/解密我的数据?它会让事情更安全吗?是否需要根据具体情况进行评估?

为了将其置于实际上下文中,Win32 Cryptography函数CryptSetKeyParam允许在加密/解密之前在密钥上设置初始化向量.其他API也允许这样做.

通常建议什么,为什么?



1> Andrew..:

当相同的密钥可能用于加密多个消息时,IV是必不可少的.

原因是,在大多数加密模式下,可以一起分析用相同密钥加密的两个消息.例如,在简单的流密码中,对使用相同密钥加密的两个密文进行异或运算导致两个消息的XOR,使用传统的密码分析技术可以从中轻松提取明文.

弱IV是使WEP易碎的部分原因.

IV基本上将一些独特的非秘密数据混合到密钥中,以防止相同的密钥被使用两次.



2> 小智..:

在大多数情况下,你应该使用IV.由于每次都会随机生成IV,如果加密相同的数据两次,加密的消息将会不同,观察者也不可能说这两条消息是否相同.



3> Purfideas..:

仔细看看CBC模式的图片(见下文).你很快就会意识到,知道IV的攻击者就像攻击者知道前一块密文一样(是的,他们已经知道了很多这样的密文).

这就是我所说的:当你确保数据完整性时,IV = 0的大多数"问题"是块加密模式的一般问题.你真的必须确保诚信.

以下是我的工作:使用强校验和(加密哈希或HMAC)并在加密前将其添加到您的明文中.有你已知的第一个密文块:它是没有校验和的同一个东西的IV,你需要校验和一百万个其他原因.

最后:CBC和流密码之间的任何类比都不是非常有见地的恕我直言.

只要看看CBC模式的图片,我想你会感到惊喜.

这是一张图片:

http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation

链接文字

推荐阅读
wurtjq
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有