字节[]密钥加密C#Aes

时间:2016-10-03 13:54:44

标签: c# encryption cryptography aes

我正在制作一个程序来保存我的密码,我正在使用Aes加密方法来加密和解密我的文件。 现在这是我的问题,我使用this方法来完成它。

每次我运行程序时,它都会生成一个新的 KEY 和一个新的 IV ,但是对于程序来说,我需要读取相同的密钥和iv时间我再次打开程序。

他们键,IV存储为byte[],两者都应该是#34;秘密"

他们创建的字节有时太多,编译器无法读取,或者它只是吓坏了。

有什么方法可以将它们设置为常量?或者将它保存到文件中更好?

1 个答案:

答案 0 :(得分:0)

  

他们键,IV存储为byte [],两者都应该是" secret"

不完全。 IV不是秘密。对于您加密的每个内容,IV应该不同并且是随机的,但它可以以明文形式存储。它们应该由CSPRNG生成。加密IV并不能真正达到目的。

  

每次运行程序时,它都会生成一个新的KEY和一个新的IV

您的密钥应来自其他密码。也就是说,你的应用应该要求一个"主人"密码,通过类似PBKDF2的方式运行,其输出用作加密和解密内容的AES密钥。使用这种方法,您的应用程序根本不需要存储密钥。

考虑您是否需要加密"完全没有密码。如果您使用密码进行验证,例如登录,则使用bcrypt之类的东西对它们进行散列更好。

另外请记住,这是一个非常难以做到的事情。到目前为止,您还没有提到加密中的任何身份验证(例如Encrypt-then-Mac)等。