JAVA-SE基础篇-文件的加密与解密举例
public class TestStream02 {
public static void main(String[] args) {
File encodingFile=new File("d:\IO\baobao.txt");
//创建一个加密后的文件和名字
File encodedFile=new File(encodingFile.getParent(),String.format("加密文件%s",encodingFile.getName()));
encodeFile(encodingFile,encodedFile);
}
private static void encodeFile(File encodingFile,File encodedFile) {
// TODO Auto-generated method stub
/*
* 加密此方法为:
* 把encodingFile的内容进行加密,然后保存到encodedFile文件中
* 加密算法:
* 数字:在原来数字上加一 例如 3变成4;
* 注释: 9变成0;
* 字母:在原来的基础上加一 例如 a变成b;
* 注释: z变成a
* 字符需要保留大小写
* 非字母字符:
* 比如: ¥ # 保留不变 中文保留不变
*/
try (FileReader fr=new FileReader(encodingFile);FileWriter fw=new FileWriter(encodedFile)){
//创建基于要加密文件长度的字符串数组
char[] all=new char[(int)encodingFile.length()];
//读取文件内容
fr.read(all);
System.out.println("加密前的内容是:");
System.out.println(all);
for (int i=0;i<all.length;i++) {
if (all[i]>=0&&all[i]<9||all[i]>=a&&all[i]<z||all[i]>=A&&all[i]<Z) {
all[i]+=1;
} else {
switch (all[i]) {
case 9:
all[i]=0;
break;
case z:
all[i]=a;
break;
case Z:
all[i]=A;
break;
default:
break;//其他不属于这里面的不做处理
}
}
}
System.out.println("加密后的文件是:");
System.out.println(all);
//创建这个文件 encodedFile文件
encodedFile.createNewFile();
//写入加密后的字符数组
fw.write(all);
} catch (FileNotFoundException e) {
// TODO: handle exception
System.out.println("文件创建未成功!");
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
public class TestStream03 {
/*
* 解密文件:
* 解密算法:
* 数字:在原来数字上减一 例如 3变成2;
* 注释: 0变成9;
* 字母:在原来的基础上加一 例如 c变成b;
* 注释: a变成z
* 字符需要保留大小写
* 非字母字符:
* 比如: ¥ # 保留不变 中文保留不变
*/
public static void main(String[] args) {
System.out.println("请输入你要解密的文件的地址目录:");
System.out.println("例如: d:\IO\baobao.txt");
Scanner s=new Scanner(System.in);
String path=s.next();
File file=new File(path);
decodeFileExam(file);
}
//解密方法
private static void decodeFileExam(File file) {
// TODO Auto-generated method stub
//创建解密后的文件 ,并且命名
File files=new File(file.getParent(),String.format("解密后%s",file.getName()));
try (FileReader fr=new FileReader(file);FileWriter fw=new FileWriter(files)){
//创建这个文件 encodedFile文件
files.createNewFile();
//创建基于要加密文件长度的字符串数组
char[] all=new char[(int)file.length()];
//读取文件内容
fr.read(all);
System.out.println("解密前的内容是:");
System.out.println(all);
for (int i=0;i<all.length;i++) {
if (all[i]>=0&&all[i]<9||all[i]>=a&&all[i]<z||all[i]>=A&&all[i]<Z) {
all[i]-=1;
} else {
switch (all[i]) {
case 0:
all[i]=9;
break;
case a:
all[i]=z;
break;
case A:
all[i]=Z;
break;
default:
break;//其他不属于这里面的不做处理
}
}
}
System.out.println("解密后的文件是:");
System.out.println(all);
//写入加密后的字符数组
fw.write(all);
} catch (FileNotFoundException e) {
// TODO: handle exception
System.out.println("文件创建未成功!");
}catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
}
}
上一篇:
IDEA上Java项目控制台中文乱码
