保护Java程序的密码

时间:2015-10-16 14:41:19

标签: java security java-security

我有一个程序,其中用户名和密码是硬编码的。所以我想将该可执行JAR文件传递给在同一网络中工作的同事。我想保护密码,不想透露给任何人。有没有办法可以传递JAR文件并保证我的密码安全,而没有任何人知道密码。

也许如果有一种方法可以在文件中存储一些密码并将其保存在服务器上,并且每次都会尝试运行JAR文件,它会从远程文件中获取传递?

2 个答案:

答案 0 :(得分:1)

您的标题和问题的内容在某种程度上是矛盾的。一个硬编码的密码首先是安全

我会推荐一种不同的设计:创建一种允许无密码访问的服务;例如,基于客户端的网络地址。那个服务将是唯一真正需要知道这个密码的部分。在必须改变某些东西的那一天(比如密码或你正在使用的实际软件)......你只需要改变一件事。

含义:配置您的JAR以触发一些RESTful服务,例如......然后在内部调用任何应用程序需要该用户名/密码。

答案 1 :(得分:1)

您可以使用盐渍哈希(哈希随机数+密码)。它会要求他们输入密码,并将密码和盐进行散列并将其与存储的密码进行比较。这是非常弱的安全性,但至少比将其与硬编码密码相比更好。

散列函数应该是加密安全的,就像SHA256一样。如果您不熟悉加密哈希值,它会获取任意大小的数据并将其缩小为固定大小的指纹(MD5为128位,SHA1为160位,SHA256为256位等)

以下是md5的示例:

md5("abc"): 900150983cd24fb0d6963f7d28e17f72
md5("not secure"): 116e54e126621ed4070b2f30ebc07fec

所以不要存储密码"不安全"在你的文件中,存储哈希" 116e54e126621ed4070b2f30ebc07fec"代替。