对于我的学校项目,我必须证明我可以在程序中使用文件处理。为此,我做了一个非常简单的登录过程,您可以创建一个帐户,将用户名和密码写入位于资源文件夹中的文本文件。很明显,这没有任何安全性,因为它不是设计为安全只是为了展示文件处理,但我的老师说,我应该尝试添加一些加密文件,以及获得更好的成绩。
我做了一些研究,很多人推荐des。
我的问题是我没有太多的时间留给我的项目,需要尽快完成它。使用des似乎需要一段时间来实现所有额外的代码。
在我的程序中,我使用一个简单的linenumberreader逐行读取文件。要写入文件,我使用的是bufferedwriter。
是否有任何方法可以非常简单地加密这些数据?它不需要非常安全,但我需要证明我至少尝试过加密数据。加密和解密都将在同一个应用程序上完成,因为数据不会被传输。
我可以自己创建一个非常简单的加密和解密算法吗?
11条答案
按热度按时间nimxete21#
你可以用一个简单的ceasar密码(http://en.wikipedia.org/wiki/caesar_cipher)
发现于http://rosettacode.org/wiki/caesar_cipher#java
请注意,java有用于加密的本机解决方案,当涉及到密码时,只对它们进行散列和比较散列要好得多,因为通常不需要对它们进行解密。
ego6inou2#
bouncy castle crypto api是java中的一个轻量级加密api。
hgncfbus3#
nbysray54#
一个简单有趣的置乱算法是burrows-wheeler变换。不是真正的安全加密,但说真的,这是一个学校的工作,这是可怕的。
8mmmxcuj5#
我不知道谁推荐des加密密码。如果你想给老师留下深刻印象,我建议你遵循以下步骤:
引用您的引用作为加密解决方案的理论支持。我建议给你这个owsap密码存储备忘单
解释代码符合规范的地方。对于一个很好的教程与示例代码,我建议你这个安全的密码哈希
此解决方案使您的项目成为现实,您可以重用它以通过将来加密模块的考试:)。否则我喜欢斯坦尼斯拉夫提出的解决方案。
好好享受!
whitzsjs6#
在java中加密简单字符串的方法太多了。如果这是一个学校的项目,我真的不认为你可以得到一个更高的波段仅仅使用一些第三方库来完成加密工作。
如果您有时间,可以尝试了解base64的工作原理,然后尝试自己创建一些加密算法。
然而,如果你坚持在java中使用一些api,我不得不说des确实是加密文本的老方法,3des(desede)或aes会更好、更安全,这两种方法从java6开始就已经得到了支持。
如果你必须导入bouncycastle库,我更喜欢这个主意,它是最安全的算法之一,可能会让你取得好成绩。
我不会给你任何演示代码,但你可以很容易地找到一些谷歌所有的算法我已经提到。
mlnl4t2r7#
使用简单的替代加密算法,将每个字符转换成数字或其他字符。
获取字符串的每个字符。
获取字符串的ascii值。
添加带有特定整数的ascii值(这将是您的加密密钥)
显示结果
vql8enpb8#
我的建议是:不要使用加密。这里有更好的:(我希望)
因此,您可以有效地知道用户是否篡改了包含详细信息的文本文件,并在使用被篡改的帐户时显示错误消息。然而,这并不能阻止用户更改文件,它只会阻止被篡改的帐户被使用…我想你的计算机老师可能会喜欢这个。您也可以这样做:f.setreadonly();当您写入文件时,f.setwritable(true,true),然后在关闭输出流后,f.setreadonly();再一次。。。但是文件还是可以替换的,因此第一个和第二个更有效。谢谢
lmyy7pcs9#
可以使用这些函数对简单文本进行加密和解密
kcwpcxri10#
试试这个,。。。很简单
所以基本上,在写入文件之前,你需要加密,而在读取之后,你需要解密它。
bybem2ql11#
一个非常基本的方法是用一个键对数据进行异或运算。这种方法是对称的,也就是说,您可以使用相同的密钥进行解码和编码。
如果我们选择一个1字节的密钥,它很好而且简单,足以让它不可读(但一点也不安全!)