想到实现这个加密的方式是因为在回顾java前面的知识点的时候,关于^操作符有 a^b^b=a 也就是说b可以作为一个秘钥,而异或则是加密的方法。
文件的io操作,则无非是用字符或字节进行,在底层也是由一串01组成,那么也就是说是字符或字节和整型等也是一样的,能够进行异或操作!所有就写了就结合文件操作和异或的操作符,写了这么一个小程序,实现简单的加解密!哈~大家别笑话!我是后飞IT ....
哈~明天那个谁,就要回ST参加省考了,老爷保号TA啊~~
package com.yihuo;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.Reader;
import java.io.Writer;
import java.util.Scanner;
public class Jami {
public static void main(String[] agrs) throws Exception{
File f=new File("C:\\jiami.txt");
Writer oos=new FileWriter(f);
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要输入的内容");
String content=sc.nextLine();
oos.write(content);
oos.flush();
oos.close();
Reader iis =new FileReader(f);
char[] bs=new char[1024];
int len=0;
len=iis.read(bs);
iis.close();
lock(bs, len);
System.out.println("亲,你看得懂吗?");
String s=new String(bs,0,len);
System.out.println(s);
unlock(bs,len);
s=new String(bs,0,len);
System.out.println("亲,这下看懂了吧!!");
System.out.println(s);
}
private static void unlock(char[] bs, int len) {
//小小的解密
for(int i=0;i<len;i++){
//bs[i]=(char) (bs[i]^'a'); 这里的类型是跟^的那个数的数据类型有关的,要两者要转换成相同的
bs[i]=(char) (((int)bs[i])^1);
}
}
private static void lock(char[] bs, int len) {
//小小的加密
for(int i=0;i<len;i++){
bs[i]=(char) (((int)bs[i])^1);
}
}
}