【发布时间】:2011-03-17 21:42:18
【问题描述】:
我正在开发一个 Java RCP 应用程序。用户需要使用他的智能卡对自己进行身份验证才能访问应用程序。在这个里面,他可以打开/保存需要加密存储的文件。
目前,我正在使用基于密码的 AES 加密和硬编码密码。 这显然不安全,所以我需要一种不同的方法来加密/解密文件。
引起这个问题的原因是有几个要求要满足:
- 不保证网络连接(必须在离线模式下可用)
- 多个用户必须有权访问文件(因此没有公钥/私钥加密)
- 不应为所有文件使用一个“主”密钥
编辑: 我不需要非常高的安全级别。攻击者获取密钥应该比只打开分布式 JAR 文件并以纯文本形式获取密钥要困难一些。
任何提示将不胜感激。
【问题讨论】:
-
不要存储密码,存储密码的哈希值。
-
我需要密码来重建密钥和解密文件。所以哈希是行不通的。
-
使用哈希作为键。无论哪种方式,如果 他们 找到您的密钥,您可能会被搞砸,不管它的存储格式如何;不要存储密钥,而是每次通过散列给定密码来重建它 - 有效密码 = 正确的密钥。
-
使用hash作为key,然后存储hash与使用password作为key,存储密码是一样的。
标签: java encryption key keystore