2016-07-31 81 views
0

我有以下三条线在我的小游戏,存储新用户的ID和通行证:Java:简单的文本文件加密?

Properties prop = new Properties(); 
prop.setProperty(id, pass); 
prop.store(new FileOutputStream(new File("path/to/project/src/properties.data")), ""); 

不幸的是我已经注意到,仅通过改变性能文件扩展为TXT所有用户并且任何人都可以看到并读取密码,这是我不太喜欢的。请让我知道以某种方式加密文件的简单方法。

事情是我已经查过这个,但答案并不真正符合我的需求,我不希望我的游戏文件受到最大的黑客攻击,所以使用AES或任何其他大流行的图书馆会太多我会说。你怎么看?

+9

对于密码,你应该使用**散列**不加密。你可以使用像bCrypt这样的东西。 –

+0

http://www.mindrot.org/projects/jBCrypt/找到了。看起来很酷我 –

+2

这里没有足够的信息来建议散列而不是加密。您是否使用存储的密码登录到远程服务器?如果是这样,哈希将无法正常工作。 – erickson

回答

3

首先,无论扩展名是.txt.data还是别的,每个人都可以读取您的密码文件。该扩展只是一个Windows技巧来决定用哪个程序来打开文件,但它对内容没有任何作用。

如果你想加密密码文件,你需要一个密钥和/或密码,然后你需要弄清楚在哪里以及如何存储它。你只是推迟了这个问题。

如果文件中包含玩家在游戏中的名称和密码,请使用@Boris蜘蛛的建议:不要保存(加密的)密码,只需保存密码的哈希。当有人登录时,计算输入密码的散列并将其与您保存的散列进行比较。如果它们相同,则用户输入正确的密码。请参阅this question and the accepted answer以了解执行此操作的可能方法。

0

我遇到了类似的问题,我在文件中写了一个AES加密的字符串(在我的情况下,用户被要求从管理员处取得加密密钥放入属性文件,所以我提供了一种方法来加密密码他们也是),然后在我正在阅读的方法中解密它。