Java批量加密解密文件简单小程序
2013-07-02 12:26
531 查看
今天突然想起来要把我的一些文件(文本,图片文件等都可以)给加密了,那就写了一个加密解密的小程序,并不牵涉什么很厉害的算法(所以大牛勿喷),就是把一些数据加减一个固定数这么简单的加密解密,不过还是很实用的,可以批量的把当前目录下的所有文件给加密了,同时可以用解密文件把加密后的文件给解密了,程序很简单就不多解释了,很基础但扩展性和参考性还是很高的,先上图,后上源码:
运行加密文件lock.java,提示输入加密秘钥,输入任意“数字”即可,但要记住啊,因为解密时要输入这个秘钥,否者是解不开的,然后回车,就可加密,当加密成功会有提示输出“加密成功”
当加密成功后,我们就可发现java文件夹(包括子文件夹)下的所有文件(不包括程序文件)都有一个新文件产生文件名+Lock,这就是加密后的文件,打开是乱码,只有对其再解密才行。
解密的和加密的类似,故不写了,直接写源代码(代码很简单,而且我已经加注释,就不多解释了):
加密文件Lock.java
解密文件UnLock.java
运行加密文件lock.java,提示输入加密秘钥,输入任意“数字”即可,但要记住啊,因为解密时要输入这个秘钥,否者是解不开的,然后回车,就可加密,当加密成功会有提示输出“加密成功”
当加密成功后,我们就可发现java文件夹(包括子文件夹)下的所有文件(不包括程序文件)都有一个新文件产生文件名+Lock,这就是加密后的文件,打开是乱码,只有对其再解密才行。
解密的和加密的类似,故不写了,直接写源代码(代码很简单,而且我已经加注释,就不多解释了):
加密文件Lock.java
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class Lock{ /** * @param args */ private static List<String> listPath=null;//源文件地址 private static List<String> listNew=null;//加密后新文件地址 private static int lock_Num=0;//加密的密钥 public static void main(String[] args) throws IOException{ Scanner sc = new Scanner(System.in); listPath = new ArrayList<String>(); listNew = new ArrayList<String>(); System.out.print("加密秘钥:"); lock_Num = sc.nextInt(); //System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 getFile(System.getProperty("user.dir")); preWork(); lockFile(); } //取得当前文件夹下的所有文件的路径和名称(不包括加密解密文件) private static void getFile(String path){ // get file list where the path has File file = new File(path); // get the folder list File[] array = file.listFiles(); for(int i=0;i<array.length;i++){ if(array[i].isFile()){ if(!(array[i].getName().startsWith("Lock")||array[i].getName().startsWith("UnLock"))){ listPath.add(array[i].getPath()); //listName.add(array[i].getName()); } }else if(array[i].isDirectory()){ getFile(array[i].getPath()); } } } //Creak new Files to save 预处理,取得加密后新文件的保存地址 private static void preWork(){ for(int i=0;i<listPath.size();i++){ String splitF[] =listPath.get(i).split("\\."); listNew.add(splitF[0]+"Lock"+"."+splitF[1]); } } //加密 public static void lockFile() throws IOException{ for(int i=0;i<listPath.size();i++){ File soure = new File(listPath.get(i)); File save = new File(listNew.get(i)); FileInputStream fis = new FileInputStream(soure); FileOutputStream fos = new FileOutputStream(save); int b = 0; while ((b = fis.read()) != -1) { fos.write(b - lock_Num); fos.flush(); } fos.close(); fis.close(); } System.out.println("加密完成"); } }
解密文件UnLock.java
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class UnLock{ /** * @param args */ private static List<String> listPath=null;//保存源文件地址 private static List<String> listNew=null;//保存解密新文件地址 private static int unLock_Num=0;//解密秘钥 public static void main(String[] args) throws IOException{ Scanner sc = new Scanner(System.in); listPath = new ArrayList<String>(); listNew = new ArrayList<String>(); System.out.print("解密秘钥:"); unLock_Num = sc.nextInt(); //System.getProperty("user.dir") user.dir指定了当前的路径 getFile(System.getProperty("user.dir")); preWork(); unLockFile(); } //取得当前文件夹下的所有文件的路径和名称(不包括加密解密文件) private static void getFile(String path){ // get file list where the path has File file = new File(path); // get the folder list File[] array = file.listFiles(); for(int i=0;i<array.length;i++){ if(array[i].isFile()){ if(!(array[i].getName().startsWith("Lock")||array[i].getName().startsWith("UnLock"))){ listPath.add(array[i].getPath()); //listName.add(array[i].getName()); } }else if(array[i].isDirectory()){ getFile(array[i].getPath()); } } } //Creak new Files to save 预处理,取得解密后新文件的保存地址 private static void preWork(){ for(int i=0;i<listPath.size();i++){ String splitF[] =listPath.get(i).split("\\."); listNew.add(splitF[0]+"UnLock"+"."+splitF[1]); } } //解密 public static void unLockFile() throws IOException{ for(int i=0;i<listPath.size();i++){ File soure = new File(listPath.get(i)); File save = new File(listNew.get(i)); FileInputStream fis = new FileInputStream(soure); FileOutputStream fos = new FileOutputStream(save); int b = 0; while ((b = fis.read()) != -1) { fos.write(b + unLock_Num); fos.flush(); } fos.close(); fis.close(); } System.out.println("解密完成"); } }
相关文章推荐
- 一个简单的C++加密,解密文件程序
- Visual Studio 2017中使用正则修改部分内容 如何使用ILAsm与ILDasm修改.Net exe(dll)文件 C#学习-图解教程(1):格式化数字字符串 小程序开发之图片转Base64(C#、.Net) jquery遍历table为每一个单元格取值及赋值 。net加密解密相关方法 .net关于坐标之间一些简单操作
- Qt对中文文件的简单加密解密
- MFC 简单的加密解密 小程序
- linux 加密解密文件小程序
- Qt对中文文件的简单加密解密
- DES 方式:文件加密与解密的简单测试
- 文件加密解密小程序
- C++ 简单的文件加密和解密 实例
- 简单的加密,解密程序
- C语言实现简单文件加密解密
- C++实现文件简单加密与解密(读取文件中的字符,对字符转换,然后写入,完成加密,解密反之)
- 简单的加密解密文件
- C++ 简单的文件加密和解密 实例
- C# 程序简单实现加密解密程序代码
- C语言写的一个简单文件加密程序
- 实现对文件进行加密,解密程序代码
- java对文件简单的加密解密(异或运算)
- RSA算法简单实现加密、解密、签名、验证(原创Java程序)
- 简单的class文件加密解密