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项目控制台中文乱码