Java:简单的文本文件加密?

时间:2016-07-31 22:37:10

标签: java encryption password-encryption

我的小游戏中有以下三行存储新用户的ID和传递:

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

不幸的是我注意到只有将属性文件扩展名更改为txt,所有用户和密码才会被任何人看到和读取,这是我不喜欢的事情。请让我知道一种以某种方式加密文件的简单方法。

问题是我已经对此进行了搜索,但答案并不能满足我的需求,我不认为我的游戏文件会被最大的黑客攻击,所以使用AES或任何其他大型流行的图书馆会太多我我会说。你觉得怎么样?

3 个答案:

答案 0 :(得分:3)

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

如果要加密密码文件,则需要密钥和/或密码,然后您需要确定存储密码文件的位置和方式。你只是推迟了问题。

如果文件中包含游戏中玩家的姓名和密码,请使用@Boris Spider的建议:不要保存(加密)密码,只需保存密码的哈希值即可。当有人登录时,计算输入密码的哈希值并将其与您保存的哈希值进行比较。如果它们相等,则用户输入正确的密码。有关可能的方法,请参阅this question and the accepted answer

答案 1 :(得分:1)

这是一篇关于安全存储密码的优秀文章。示例是在C#中,而不是Java,但它仍然是一个有用的讨论: https://blog.mking.io/password-security-best-practices-with-examples-in-csharp/

我也强烈推荐Michael Howard和David LeBlanc所着的“24软件安全致命罪”,作为常见安全漏洞以及如何避免它们的更全面概述。

答案 2 :(得分:0)

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