大家好,又见面了,我是你们的朋友全栈君。
这篇我们利用流来处理图片加密,当然这里没有处理到打开图片,提示输入密码的这么好友好效果。图片加密,也是把一个图片字节读取,然后进行加密运算,最后拷贝成新的图片文件。简单来说,这个过程原理就是,一个数如何被同一个数异或两次,那么结果就等于这个数本身。第一次进行异或就是图片加密过程,给图片每一个字节都进行加密,第二次异或就是解密过程。
1.图片加密过程
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("copy.png");
FileOutputStream fos = new FileOutputStream("123.png");
int b;
while( (b = fis.read()) != -1) {
fos.write(b ^ 123);
}
fis.close();
fos.close();
}
}
运行之后,Eclipse中打开图片显示一个X,如果是图片管理器打开就报图片受损,无法正常打开,这个就是加密效果。
2.图片解密过程
只需要调整两行代码,把打开失败图片当做流对象进行性读取,然后写入到新图片,新的图片就是解密之后的文件。
package io;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class Test1 {
public static void main(String[] args) throws IOException {
FileInputStream fis = new FileInputStream("123.png");
FileOutputStream fos = new FileOutputStream("321.png");
int b;
while( (b = fis.read()) != -1) {
fos.write(b ^ 123);
}
fis.close();
fos.close();
}
}
图片加密的简单实现就是这样,上面代码里面的异或123,这个123就是秘钥。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/151988.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...