今天班上女神给我发了加密文件,欣喜若狂之中,不多bb,开始解码。
你说女神是看上我哪了呢? 孩子该叫什么好呢?好忧虑呀!
首先我先来看看女神给我发的文档。
爱你?.txt看来今天我的春天来了。不能让女神失望,我要马上弄完,去和女神约会!
首先我们先来看看女神给我们信息:(用utf-8格式读取异或每个中文最后一个字节)
那么首先我们先去看看utf-8的字符的编码格式:
可见utf-8格式下一个字符占用3个字节,所以女神是把每个字符的第三个字节进行了异或。
那么一切都明细了:(作为程序员调理不能乱)
1.首先字节进行操作的,所以我们肯定用到了文件读取那么满足条件的流只有:
FileInputStream,FileOutputStream,BufferedInputStream,BufferedOutputStream
但是只是读取而已,缓冲流没有必要,那么如何操作解决了。
2.异或每个字符最后一个字节:
用长度为三的byte数组读取,读取完把数组最后一位进行异或操作,最后写入新的文档
3.异或的内容:嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯嗯!
先写吧:
@Test
public void test(){
FileInputStream fis= null;//声明字节流读取对象
FileOutputStream fos= null;//声明字节流写入对象
try {
fis = new FileInputStream("C:\\Users\\BlackJun\\Desktop\\加密文件\\爱你?.txt");//写入文档位置
fos = new FileOutputStream("C:\\Users\\BlackJun\\Desktop\\加密文件\\我也爱你.txt");//写出文档位置
byte data[]=new byte[3];//定义一个3长度byte数组进行读取
int len;//记录读取了的长度
while((len=fis.read(data))!=-1){//读取3个进行操作一次,直到读完。
data[2]=(byte)(data[2]^2);//对第三个字节进行异或操作
fos.write(data,0,len);//写入文档
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if(fis!=null)
fis.close();//释放对象
} catch (IOException e) {
e.printStackTrace();
}
try {
if(fos!=null)
fos.close();//释放对象
} catch (IOException e) {
e.printStackTrace();
}
}
}
(这里上面需要导包)
好的文档写完了。那我们只有最后一步,找女神进行异或的数字了。
经历了女神班级号,座位号,生日,见面日,开学日,军训日等一系常规操作以后仍然是一堆乱码后,我决定使用一些非常规操作:
我就知道女神是对我有意思的,还愿意给我这么明显的提示!(暗喜!)
我的学号是5号,那么我直接异或5那么文档出来的文档就是女神对我的暗语啦!!!
可结果仍然是一堆乱码:
正当我百思不得其解的时候,我反复检查线索(女神肯定不可能骗我啊)
发现我始终没有注意的问题是:
以utf-8的格式,我发现我从头到尾都没有满足这个条件(失策失策,怎么会犯这么大的错误)
真的是!女神竟然还考验我细不细心,哼。就这,我以后可是十足的暖男呢?
呢呢呢呢呢呢??????
怎么会呢?坑定时什么地方出了问题是不是学姐记错我学号了。
可我学号是呀。
我心直接凉了半截,可转念一想是不是不是我的学号啊。但是是给我的
我果断从2开始异或。(为啥不用1是因为1异或什么都是原数,无意义)
这终究只是错付了,只是改变了位置。
是不是女神还发给你其他人啊!(心不由得凉了半截)
不行,死也要当个饱死鬼!
18,18,18!
是18号!
可我还是不甘心啊!我一定要问清楚女神一定是记错我学号了
终究是错付了!
真的是女神竟然没看上我,看是18号哪个鬼,个子不高,长得也不咋地怎么就看上他了呢?
糊涂啊!
没过几天最扎心得来了,女神竟然和他官宣了!
我气不打一处出啊~
竟然发现我竟然为了看女神喜欢谁改了这么多次文档,让女神等那么久。
那下次女神要是给我发别得格式怎么行!
我果断优化了一下代码:
(留给大家吧!能够解锁任何格式代码)
这样以后女神发什么格式我都可以无缝解码,迷上女神。
女神!
我等你来码!
如需转载,放原文链接,仅供学习交流!
用到知识:
IO流,异或,格式转换,utf-8编码格式,数组,while循环,
if条件判断,文件路径,异常,数据类型转换,单元测试嵌套,
仅供参考!新手上路欢迎留言!
如果对你有帮助,点赞是我最大的帮助!
届时会更新升级版全格式读取源码!关注不迷路。