黑马程序员技术交流社区
标题:
IO流图片加密
[打印本页]
作者:
死灰复燃
时间:
2016-6-22 00:55
标题:
IO流图片加密
有如下程序:public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("天空.jpg");
FileOutputStream fos = new FileOutputStream("copyy.jpg");
int b = 0;
while((b=fis.read())!=-1){
fos.write(b^123+3*6);
}
fis.close();
fos.close();
}
这里给天空.jpg文件加密.
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("copyy.jpg");
FileOutputStream fos = new FileOutputStream("copyy1.jpg");
int b = 0;
while((b=fis.read())!=-1){
fos.write((b-3*6)^123);
}
fis.close();
fos.close();
}
这里给加密后的copyy,jpg解密,但是发现仍然打不开coppy1.jpg.
想了好久都不懂怎么回事,哪位大神知道,
作者:
yuanjun52306
时间:
2016-6-22 02:04
本帖最后由 yuanjun52306 于 2016-6-22 02:14 编辑
问题出在运算符优先级上,加密那里改成这样就对了(
b^123)+3*6
作者:
何亚辉
时间:
2016-6-22 09:32
问题只有一个, 一个byte数在在转成int的时候取值范围是0-255,,如果你减去18的话, 不能保证这个图片中的每个字节仍然是0-255的数, 而一旦超出这个范围,例如成为负数, 那么你在copy的时候, 那个字节已经完完全全成了一个不可能在逆转回来的数,,
作者:
wrui
时间:
2016-6-22 22:15
顶一下,,,,,,,,
作者:
杨海峰
时间:
2016-6-22 22:52
运算符^的优先级比+低! 应该是b^123+3*6
作者:
杨海峰
时间:
2016-6-22 22:54
运算符^的优先级比+低! 应该是b^123+3*6
作者:
Kingchen
时间:
2016-6-22 23:01
顶一个!
作者:
jeremyhe
时间:
2016-6-22 23:25
有没有使用flush()方法对刷新一下我们的流,可能有一两个没有写进去的话也会导致图片解密不成功
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2