首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何安全存储密码

如何安全存储密码
EN

Stack Overflow用户
提问于 2011-03-17 21:42:18
回答 2查看 636关注 0票数 3

我正在开发一个Java应用程序。用户需要使用自己的SmartCard进行身份验证才能访问应用程序。在里面,他可以打开/保存需要加密存储的文件。

目前,我正在使用基于密码的AES加密和硬编码密码。这显然是不安全的,所以我需要一种不同的方法来加密/解密文件。

引起这一问题的原因是,有几项要求需要满足:

无保证的网络连接(必须在offline-mode)

  • multiple用户中可用)必须能够访问文件(因此,不应将公钥/私钥encryption)

  • there用作所有文件的“主”-key

)。

编辑:我不需要有一个非常高的安全水平。对于攻击者来说,获取密钥应该会有点困难,就像打开分布式JAR文件并以纯文本获取密钥一样。

如有任何提示,将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-17 22:41:51

为每个文件创建一个新键。使用该密钥加密文件(使用AES)。

然后,对于允许读取文件的每个用户,使用他们的公钥(与智能卡上的私钥对应的公钥)加密新密钥。将这些加密密钥与文件一起存储。

当用户想要读取一个文件时,该软件使用他的智能卡恢复用于该文件的内容加密密钥。

该文件格式可以使用PKCS #7的加密消息语法或OpenPGP。

票数 1
EN

Stack Overflow用户

发布于 2011-03-17 21:53:45

请注意:我对安全不是很精通,这只是我脑海中闪现的东西。

作为建议,将每个文件的密码设为一个散列,其中包含为每个文件随机生成的已知盐,并为每个用户单独加密一个密码。您可以在本地安全地存储随机盐,因为它们不是文件的密钥,而且没有用户知道解锁文件的密码。通过使用公钥加密对密码进行加密和签名,您可以在每个用户、每个文件的基础上对用户进行身份验证并控制访问。

通过这种方式,您可以使用来自每个用户的公钥加密来传递密码,该密码不存储在系统中的任何地方,保护文件相互独立,不依赖于外部源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5345630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档