package com.atguigu.java; import org.junit.Test; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class PicTest { //图片的加密 @Test public void test1(){ FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("tmg.jpg"); fos = new FileOutputStream("杀生丸secret.jpg"); byte[] buffer = new byte[20]; int len; while ((len = fis.read(buffer)) != -1){ //字节数组进行修改 //错误的 // for (byte b : buffer){ // b = (byte) (b ^ 5); // } //正确的 for (int i = 0; i < len; i++) { buffer[i] = (byte) (buffer[i] ^ 5); } fos.write(buffer,0,len); } } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } //图片的解密 @Test public void test2(){ FileInputStream fis = null; FileOutputStream fos = null; try { fis = new FileInputStream("杀生丸secret.jpg"); fos = new FileOutputStream("杀生丸4.jpg"); byte[] buffer = new byte[20]; int len; while ((len = fis.read(buffer)) != -1){ //字节数组进行修改 //错误的 // for (byte b : buffer){ // b = (byte) (b ^ 5); // } //正确的 for (int i = 0; i < len; i++) { buffer[i] = (byte) (buffer[i] ^ 5); } fos.write(buffer,0,len); } } catch (IOException e) { e.printStackTrace(); } finally { if (fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if (fis != null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } } } }问题 原因
对其加密的图片是加了缓冲流的,就是这个图片是我之前使用缓冲流复制出来的图片,而加了缓冲流就解密不出来了,换成一个原来普通的图片的就会加密解密成功:)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)