2016-10-03 190 views
-1

我正在制作一个程序来保存我的密码,并且我正在使用Aes加密方法来加密和解密我的文件。 现在,这里是我的问题,我正在使用this方法来做到这一点。Byte []密钥加密C#Aes

每次我运行它生成一个新的KEY和新IV程序,但该程序读取这些文件,我需要有相同的密钥和IV每一次我重新打开该程序。

他们键和IV存储为byte[]这两者应该是“秘密”

他们所创造的字节有时太多的编译器阅读,或者它只是怪胎。

有什么办法可以将它们设置为常量?还是将它保存到文件更好?

+0

我从来没有见过编译器“怪异”。我曾经看到程序员非常生气,而且他们必须阅读这些“非常翔实”的错误描述。 –

回答

0

他们键和IV存储为一个byte []这两者应该是 “秘密”

不太。 IV不是秘密。 IV应该是不同的和随机的每个东西你加密,但它可以存储在明文。它们应该由CSPRNG生成。加密IV并不是真的有用。

每次我运行该程序会生成一个新的密钥和新IV

你的钥匙应该从另一个密码的。也就是说,你的应用程序应该要求一个“主”密码,它通过诸如PBKDF2之类的东西运行,并且它的输出被用作你加密和解密的AES密钥。采用这种方法,您的应用程序根本不需要存储密钥。


请考虑是否需要“加密”密码。如果您使用密码进行验证,例如登录,那么使用bcrypt之类的方法对它们进行哈希处理会更好。

另外请记住这是一个很难难以对的问题。到目前为止,你还没有提到你的加密认证(如加密,然后Mac)等

+0

感谢您的回复 –

+0

在这里仍然很新(事实上仍然在学校) 但我尽我所能去了解更多 –

+1

一个简单,安全和通常使用的方法是用IV加密数据的前缀。 – zaph