2013-03-26 368 views
2

我有一个函数,它使用AES加密我的用户的密钥文本输入。并根据请求进行解密。什么是维护AES加密的密钥和IV的理想方式(截至目前在应用程序中是硬编码的)。我每次都在数据库中保存加密的数据。在页面加载时,加密值从数据库中检索。该值通过单击按钮进行解密。有没有什么最好的我可以用更好的方式使用key和IV。AES加密密钥和IV

回答

4

IV可以保存(或可以甚至可以“公开”/公开传输);它是no 'secret'。密钥应该保密。所以你可以保存/传输你的数据,如<iv_here>;<encrypted_data_here>

参见wikipedia

初始化向量(IV)是用于由多种模式随机化加密并因此产生即使同一明文进行加密多次不同的密文比特块,而不需要较慢的重新键入过程。

一个初始化向量与一个关键字有不同的安全需求,所以这个IV通常不需要保密。但是,在大多数情况下,初始化向量在同一个密钥下不会重用。

+0

因此,我基本上可以在我的应用程序中硬编码IV和密钥而不用担心? – Eve 2013-03-26 09:24:21

+0

不;对于每个加密的数据块,IV(通常)需要不同(随机且独特!)。您不希望对加密的每个数据块使用相同的IV。 – RobIII 2013-03-26 09:25:08

+0

但是当我想在稍后的时间点解密时,我确实需要同样的IV。那么我应该维护它还有别的吗? – Eve 2013-03-26 09:27:32