700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > java开发文件夹加密解密程序_Java应用开发:文件加密解密

java开发文件夹加密解密程序_Java应用开发:文件加密解密

时间:2019-09-22 02:17:50

相关推荐

java开发文件夹加密解密程序_Java应用开发:文件加密解密

本人记性不是很好,总是忘记些重要信息,特别是密码,很多时间登录都要试好几个密码才成功。所以想到了把

这些容易忘记的重要信息记录到一个文本文件上,再对其加密(不易忘记的密码)。对文件的加密,自己写了个小工具。

下面看下工具的主要设计:

主界面(只注重实用性,所以界面写得很简单)

功能也很简单,就只有加密和解密,选择要文件,输入口令,即可对文件实行加密/解密。

加密原理:

采用字节流读取原文件数据,然后异或一个int值,即用户输入的口令,再写入新的文件。这样新的文件中的数据

就是原文件中的数据通过与口令异或运算后的值,打开查看就显示为乱码。

加密前文件内容:

加密后:

解密原理:

数据A异或B再异或B(即A^B^B),结果还是A,所以可以通过再次异或口令还原文件。

主要代码:

加密方法:

传入一个File对象和加密口令,每读取一个字节,通过异或运算后写入到一个新文件中。

/**

* 把文件按照输入的口令加密

*

* @param file

* 加密的目标文件

* @param code

* 加密口令

*/

public static boolean encrypt(File file, int code) {

if (!validate(file)) {

return false;

}

File tempFile = new File(file.getAbsoluteFile() + SUFFIX);

FileInputStream fis = null;

FileOutputStream fos = null;

try {

fis = new FileInputStream(file);

fos = new FileOutputStream(tempFile);

while (fis.available() > 0) {

fos.write(fis.read() ^ code);

}

} catch (Exception e) {

e.printStackTrace();

return false;

} finally {

closeStream(fis, fos);

}

return true;

}

解密方法:

传入需要解决的文件和口令,同样每读取一个字节,通过异或运算后写入到一个新文件中,得到的新文件

的内容即为加密前文件的内容。

/**

* 把文件按照输入的口令解密

*

* @param file

* 解密的目标文件

* @param code

* 解密口令

*/

public static boolean decrypt(File file, int code) {

if (!validate(file)) {

return false;

}

FileInputStream fis = null;

FileOutputStream fos = null;

try {

String path = file.getAbsolutePath();

if (!path.endsWith(SUFFIX)) {

return false;

}

File newFile = new File(path.substring(0, path.lastIndexOf(SUFFIX)));

fis = new FileInputStream(file);

fos = new FileOutputStream(newFile);

while (fis.available() > 0) {

fos.write(fis.read() ^ code);

}

} catch (Exception e) {

e.printStackTrace();

return false;

} finally {

closeStream(fis, fos);

}

return true;

}本程序只是对文件的一般加密,还有待改进,如果大家有什么意见或建议,欢迎提出。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。