2011-10-06 64 views
0

我正在学习做适当的加密实现,我认为这是一个练习,我会创建一个加密的文本编辑器。如何在基于密码的加密中处理salt

我的第一次尝试使用用户提供的密码的SHA-512散列作为密钥,它的功能很好。尽管我将这个IV存储在文件的头文件中,但没有受到保护,这让我很担心。

然后我阅读stackoverflow,我应该使用SecretKeyFactory(我使用Java)来做PBE,现在我另外需要提供一个盐。所以现在我也将盐储存在标题中,但这似乎破坏了盐的全部用途。那么这应该如何工作?当我保存艾丽丝时,她会为她的文件选择一个密码,我是否应该说“在这里,记住随机数字和密码。”?我希望生成的文件能够通过电子邮件发送给Bob,所以盐不能存储在本地。

正如我的应用程序所显示的那样,IV和盐都是公开的。我希望我的用户只需在密码保护时将他们的文件发送给Bob时知道密码,但我找不到任何如何完成的示例。

感谢您的帮助!

回答

0

将IV与数据一起存储是安全的,也就是说如何使用IV。你的方法没问题,选择一个分组密码,使用密码块链接和一个IV,然后你就不在了。

0

有许多方法可以通过密码创建密钥和iv,但更常见的方法之一涉及使用SHA-1的HMAC,在考虑一些盐和其他因素的算法中,构建足够的位混合键和四。

技术标准是PKCS#5 v2.0 PBKDF2算法,OpenSSL为其实现了一个C接口的方法,可以做到这一点,但据我所知,没有命令行方法。