java - 在 Java 代码中安全地存储访问密码

标签 java

所以,我计划编写一些 java 代码来加密和解密我扔给它的字符串。问题在于试图保存加密 key :它在 Java 代码中清晰可见,但我还没有找到将其放入代码中的方法。我还在这里检查了几个线程,但我还没有找到我的具体问题的答案。

tl;博士 我想知道如何在 Java 代码中安全地存储密码。

最佳答案

tl;dr I want to know how to securely store a password in Java code.

TL;DR - 没有办法在 Java 代码中安全地存储密码。

任何以可用形式嵌入代码中的密码都可以通过适度的努力和技巧进行逆向工程。

解决方案取决于您要解决的问题:

  • 如果您试图隐藏和使用 secret (例如密码、 key 等),并且您试图隐藏 secret 的用户控制着执行平台,那么就没有解决方案。

  • 如果您(或受信任的管理员)控制平台1,并且该平台受到适当的保护,那么有几种不同程度的安全方法。这些范围从将 secret 存储在用户无法访问的文件中到使用 HSM(硬件安全模块)来保存 secret 。

  • 重构应用程序,以便 secret ......以及受 secret 保护的事物在物理上与不受信任的用户运行的软件部分分开;例如在服务器上做“特殊的事情”。

  • 为每个用户提供自己的个人 secret ( key 、密码等)...可以撤销。

<小时/>

1 - 鉴于“root 升级”缺陷相当常见,建议您根本不允许不受信任的用户访问该平台。但是,我怀疑这是否适合您想要做的事情。

关于java - 在 Java 代码中安全地存储访问密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52720677/

相关文章:

java - 将方法写入文本文件

java - 尝试在 Spring 中加载默认页面时出现 404 错误

java - 将值传递给java中的自定义注释

Java - 一般处理子类的创建

java - 在解析数组时如何将数组中的对象作为方法的参数?

java - 如何实现将返回枚举的具体类型的方法签名?

java - 在Eclipse中构建Maven项目时出现错误,退出命令提示符后还检查maven版本

java - 每行迭代,Guava HashBasedTable

java - 使用西里尔字符解码 JSON

java - GWT 生成器和 Java 注释处理器之间的区别?