女神给你发异或加密文件,破解及是春天!?看我玩命解码

今天班上女神给我发了加密文件,欣喜若狂之中,不多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条件判断,文件路径,异常,数据类型转换,单元测试嵌套,

 

仅供参考!新手上路欢迎留言!

如果对你有帮助,点赞是我最大的帮助!

届时会更新升级版全格式读取源码!关注不迷路。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Black Jun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值