A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Sphinx 中级黑马   /  2016-6-21 23:58  /  411 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

      IO的字节流是比较简单的一部分,图片加密是其中一个比较实用的方式,利用了^两次得到本身的原理,以任意合理int数作为密钥加密.听起来很简单,但在今天的运行中发现了一个问题.大家有兴趣都可以试试.
C:\Users\Administrator\Desktop\图片\test.png
-----------------------------我是分割线
      这样加密之后,要如何才能得到解密图片呢?
      经过几番周折,尝试过(len-50*13)^128等诸多尝试,一直没有成功.最终发现,解密的密钥就是len^128+50*13.运算符中,+的优先级比^高......
     希望这个小知识点可以帮到大家

6 个回复

倒序浏览
package com.heima.test;  import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException;  public class Test1 {          /**          利用^加密图片         ^后面的数字相当于是密钥,同一对象异或两次得到本身.          * @throws IOException          */         public static void main(String[] args) throws IOException {                 BufferedInputStream  bis = new BufferedInputStream(new FileInputStream("chong.jpg"));                 BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("chong1.jpg"));                 int len;                 while((len = bis.read())!=-1) {                         bos.write(len^128+50*13);                 }                 bis.close();                 bos.close();         }  }

点评

赞!  发表于 2016-6-23 00:42
回复 使用道具 举报
初次发帖,排版无能,建议粘到eclipse运行试试
回复 使用道具 举报
可以的   现学现卖
回复 使用道具 举报
收藏了
回复 使用道具 举报
火影木叶 发表于 2016-6-22 00:09
可以的   现学现卖

也是我们班的啊,居然碰上了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马