我正在研究Java RCP应用程序。用户需要使用智能卡对自己进行身份验证才能访问应用程序。在这里面,他可以打开/保存需要加密存储的文件。如何安全地存储加密密码
目前,我使用带有硬编码密码的基于密码的AES加密。 这显然不安全,所以我需要一种不同的方法来加密/解密文件。
什么引起这个问题是有要满足几个条件:
- 没有保证的网络连接(必须处于离线模式下可用)
- 多个用户必须有权访问文件(所以不公钥/私钥加密)
- 不应该有用于所有文件的一个“主” - 键
编辑: 我不需要很高的安全级别。攻击者只需要打开分布式JAR文件并以纯文本形式获取密钥即可获得密钥。
任何提示将不胜感激。
不要存储密码,存储密码的散列。 – 2011-03-17 21:47:26
我需要密码来重建密钥并解密文件。所以哈希不起作用。 – st3ve 2011-03-17 21:49:13
使用散列作为键。无论哪种方式,如果_they_找到你的钥匙,你可能会被拧紧,不管它的存储格式如何;不要存储密钥,但每次通过散列给定的密码重新构建它 - 有效的密码=正确的密钥。 – 2011-03-17 21:50:32