通过io流对图片进行加密与解密

package 练习;

import org.junit.Test;

import java.io.*;

public class PictureSecret {
          
   
    @Test
    //对图片进行加密
    public void pictureSecret()  {
          
   
        BufferedInputStream bi= null;
        BufferedOutputStream bo= null;
        try {
          
   
            //创建输入输出文件
            File fileIn=new File("F:\java92\src\练习\1.jpg");
            File fileOut=new File("F:\java92\src\练习\1secret.jpg");
            //创建流对象
            FileInputStream fi=new FileInputStream(fileIn);
            FileOutputStream fo=new FileOutputStream(fileOut);
            //创建缓冲区
            bi = new BufferedInputStream(fi);
            bo = new BufferedOutputStream(fo);
            //进行读取与写入
            int len;
            while (( len=bi.read())!=-1) {
          
   
                //加密异或
                byte b= (byte) (len^5);
                bo.write(b);
            }
        } catch (IOException e) {
          
   
            e.printStackTrace();
        } finally {
          
   
            //关闭流
            try {
          
   
                if (bo!=null) {
          
   
                    bo.close();
                }

            } catch (IOException e) {
          
   
                e.printStackTrace();
            }
            try {
          
   
                if (bi!=null) {
          
   
                    bi.close();
                }

            } catch (IOException e) {
          
   
                e.printStackTrace();
            }

        }
    }
    @Test
    //对图片进行解密
    public void pictureReceiver()
    {
          
   
        BufferedInputStream bi= null;
        BufferedOutputStream bo= null;
        try {
          
   
            //创建输入输出文件
            File fileIn=new File("F:\java92\src\练习\1secret.jpg");
            File fileOut=new File("F:\java92\src\练习\5.jpg");
            //创建流对象
            FileInputStream fi=new FileInputStream(fileIn);
            FileOutputStream fo=new FileOutputStream(fileOut);
            //创建缓冲区
            bi = new BufferedInputStream(fi);
            bo = new BufferedOutputStream(fo);
            //进行读取与写入
            int len;
            while ((len=bi.read())!=-1) {
          
   
                //解密异或  相当于 5^7^7=5
                byte b= (byte) (len^5);
                bo.write(b);
            }
        } catch (IOException e) {
          
   
            e.printStackTrace();
        } finally {
          
   
            //关闭流
            try {
          
   
                if (bo!=null) {
          
   
                    bo.close();
                }

            } catch (IOException e) {
          
   
                e.printStackTrace();
            }
            try {
          
   
                if (bi!=null) {
          
   
                    bi.close();
                }

            } catch (IOException e) {
          
   
                e.printStackTrace();
            }
        }
    }
}
经验分享 程序员 微信小程序 职场和发展