【问题标题】:Securely saving password locally java? [duplicate]在本地安全地保存密码java? [复制]
【发布时间】:2011-09-09 05:36:33
【问题描述】:

可能重复:
What is the best practice for securely storing passwords in Java

我正在开发一个 java 应用程序,并希望将密码本地保存在文件中。我不知道如何实现这一点,任何帮助将不胜感激。

【问题讨论】:

  • 请提供更多信息 - 您需要密码才能登录其他内容,还是您正在编写的应用程序的密码?换句话说,您(应用程序)需要检查密码还是提供密码?
  • 你到底想做什么?这个密码需要恢复吗?
  • 我正在使用 java mail api 来保存电子邮件 ID 的密码,所以我想这是一个非常有意义的信息

标签: java file


【解决方案1】:

您没有为此提供太多信息。
我的第一个建议是不要保存密码本身,而是保存其哈希值。
当您需要验证某人是否提供了正确的密码时,只需比较哈希值即可。
例如,您可以将 MD5 用于此 Message Digest

如果您需要能够检索密码,则必须对其进行加密。
为此,您可以使用例如AES AES in Java 但是对于对称加密,你现在有一个新问题,在哪里存储解密密钥。

这取决于你想做什么和要求。
你的问题说的不多

【讨论】:

  • 这并不能解决问题:在存储用于加密第一个密码的密钥时,您将遇到完全相同的问题
  • @Mateo:看需求。发帖者不多说。解密密码存放在哪里,可以根据安全要求采用不同的方式解决。
【解决方案2】:

您可以使用AES / DES算法并将加密的密码写入磁盘。

【讨论】:

  • 这并不能解决问题:在存储用于加密第一个密码的密钥时,您将遇到完全相同的问题
  • @Matteo impossible 在本地计算机上安全地存储可检索的密码。
  • @NullUserExcaption:我知道,但是您可以要求管理员在启动时输入密码(如果这是一个选项),您至少可以将其存储在只有(系统)用户运行的地方应用程序具有访问权限...取决于用例。但是 Rahul 的建议没有意义:为了避免存储第一个密码,您必须存储第二个密码(用于加密第一个密码)
【解决方案3】:

我终于想通了。我所做的只是将字符转换为 ascii 代码,然后根据情况添加或减去。

【讨论】:

  • 您的代码可以被反编译,攻击者可以看到如何读取密码。
  • 如果公式未知我的意思是说假设我添加一些数字然后相乘然后除以等等如何找出?
  • 如何找到它?只需反编译并运行您的代码即可。
猜你喜欢
  • 2017-03-23
  • 2020-10-19
  • 2013-06-02
  • 2016-02-03
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多