AES加密密钥和初始化向量(IV)

3

我有一个函数,使用AES加密从用户输入的关键文本,并在需要时解密。如何以理想的方式维护AES加密的密钥和IV(目前在应用程序中硬编码)?我每次都将加密数据保存在数据库中。在页面加载时,从数据库检索加密值。该值在单击按钮时被解密。是否有更好的方法来使用密钥和IV。

1个回答

5

IV可以保存(或者甚至可以被“公开”/传输),它是no '秘密'的。密钥应该保持私密。所以,您可以像这样保存/传输数据:<iv_here>;<encrypted_data_here>

请参阅wikipedia

初始化向量(IV)是一组位,用于几种模式中随机化加密,从而产生不同的密文,即使加密多次相同的明文,也无需较慢的重新键入过程。

初始化向量具有与密钥不同的安全要求,因此IV通常不需要保密。但是,在大多数情况下,重要的是在相同的密钥下永远不要重复使用初始化向量。


所以我可以在我的应用程序中硬编码IV和密钥,而不必担心吗? - Eve
不,IV(通常)需要对每个加密数据块都不同(随机且唯一!)。您不希望为加密的每个数据块使用相同的IV。 - RobIII
但是当我想在以后的某个时间解密时,我确实需要相同的IV。那么我应该把它存放在其他地方吗? - Eve
1
如我所示:您可以将IV与加密数据“一起”存储,也可以将其存储在单独的字段中。都可以。您可以在此处了解有关IV的信息:http://en.wikipedia.org/wiki/Initialization_vector。 - RobIII

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接