JAVA-SE基础篇-文件的加密与解密举例

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();
		}
	}
	

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值