2015-10-16 68 views
0

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

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

+0

不,没有防弹的方法。有人可以在运行时从内存中获取密码。 – Reinard

+0

您可以使用某种简单的字符替换加密,并将密钥保存在本地计算机上。但即使这并非100%安全。 – durbnpoisn

+0

@DavidPulse如果这个想法可行,你能告诉我如何在Java或某种示例上实现它。 – Arnav

回答

1

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

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

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

+0

我会尝试使用REST并查看它是否有效。谢谢您的帮助。 – Arnav

1

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

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

这里是MD5的例子:

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

因此,而不是存储密码“不安全”的文件,存储哈希“116e54e126621ed4070b2f30ebc07fec”代替。

+0

MD5不安全。 – SLaks

+1

他也不想做什么,但这对他的需求就足够了。我已阅读白皮书并了解MD5攻击如何工作。如果你对自己的奴隶感到如此强烈,也许你可以通过找到“b1474b76e54e34244298766f27d04106”的消息或者至少找到另一条会引起碰撞的消息向我们展示它是多么的不安全。很简单,正确的Slaks? :) – New2Programming

+0

@ New2Programming这看起来不错,我认为这会比硬编码更好。非常感谢 :) – Arnav