您的位置:首页 > 移动开发 > 微信开发

Java批量加密解密文件简单小程序

2013-07-02 12:26 531 查看
今天突然想起来要把我的一些文件(文本,图片文件等都可以)给加密了,那就写了一个加密解密的小程序,并不牵涉什么很厉害的算法(所以大牛勿喷),就是把一些数据加减一个固定数这么简单的加密解密,不过还是很实用的,可以批量的把当前目录下的所有文件给加密了,同时可以用解密文件把加密后的文件给解密了,程序很简单就不多解释了,很基础但扩展性和参考性还是很高的,先上图,后上源码:

运行加密文件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("解密完成");
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: