Java实现文件的加密与解密

发表于:2015-7-27 09:05

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:路上的脚印    来源:51Testing软件测试网采编

  从代码可以看出,给定的加密秘钥(异或数据,可以在合法范围内随便定义)为十六进制数0x99。图片资源为以中文命名的“桌面.jpg”,加密文件为“encFile.png”,还有值为“decFile.bmp”的String类对象作为解密文件名称。
  相对应地,解密的实现几乎和加密相同,只是输入与输出文件不同,看下面代码。
1 private static void DecFile(File encFile, File decFile) throws Exception {
2   if(!encFile.exists()){
3     System.out.println("encrypt file not exixt");
4     return;
5   }
6
7   if(!decFile.exists()){
8     System.out.println("decrypt file created");
9     decFile.createNewFile();
10   }
11
12   InputStream fis  = new FileInputStream(encFile);
13   OutputStream fos = new FileOutputStream(decFile);
14
15   while ((dataOfFile = fis.read()) > -1) {
16     fos.write(dataOfFile^numOfEncAndDec);
17   }
18
19   fis.close();
20   fos.flush();
21   fos.close();
22 }
  由于加密后的图片文件(保存为PNG类型)是不能直接在图片查看器中打开的,因为其内容已经改变,所以其缩略图标会显示为两朵不同颜色的花。对于其他类型的加密或损坏文件的缩略图标:JPG为山水画,BMP和TIF为画刷涂鸦,GIF为三个不同颜色的几何图形。当然,这些默认的图标应该会因系统而异。
  下面给出初始、加密及解密后的图标截图:
  和预想的一致,经测试发现以上方法对GIF动画(不是GIF图片,而是可以播放的动画资源)的加密与解密同样适用,代码和截图也就没有区别了,不过还是贴上来:
  1 File srcFile = new File("srcFile.gif"); //初始文件
  2 File encFile = new File("encFile.gif"); //加密文件
  3 File decFile = new File("decFile.gif"); //解密文件
  有两点需要注意:
  1、在调用加密与解密方法时,必须加上异常处理块(try{...}catch{...},否则编译不通过)。
  2、对用来加密或解密的源文件进行打开(读取)操作之前,最好判断其是否存在,免得造成意想不到的错误和时间的浪费。因为若文件不存在,后续的操作都是没有意义的。
  今天就先写到这,总结一下吧。文件加密简单地说就是对数据进行变换,虽然一千种方法可能会有一千种一种结果,但是思想是通用的。关键是加密所采用的算法的难易,有时间会对文中提到的算法用Java进行实现。
22/2<12
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号