图片加密 解密
根据网上代码Copy 用异或 做一个图片加密解密的功能
发现当服务器重启 前端通过第一次上传多个图片 会出现问题 猜测由于ajax请求 时间过短
参考:https://www.cnblogs.com/fx2008/p/5681930.html
import java.io.File; import java.io.InputStream; import java.io.OutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; public class FileEncAndDec { private static final int numOfEncAndDec = 0x99; //加密解密秘钥 private static int dataOfFile = 0; //文件字节内容 public static void main(String[] args) { File srcFile = new File("桌面.jpg"); //初始文件 File encFile = new File("encFile.tif"); //加密文件 File decFile = new File("decFile.bmp"); //解密文件 try { EncFile(srcFile, encFile); //加密操作 } catch (Exception e) { e.printStackTrace(); } } private static void EncFile(File srcFile, File encFile) throws Exception { if(!srcFile.exists()){ System.out.println("source file not exixt"); return; } if(!encFile.exists()){ System.out.println("encrypt file created"); encFile.createNewFile(); } InputStream fis = new FileInputStream(srcFile); OutputStream fos = new FileOutputStream(encFile); while ((dataOfFile = fis.read()) > -1) { fos.write(dataOfFile^numOfEncAndDec); } fis.close(); fos.flush(); fos.close(); } }
改进(和上面传参不一样)(主要是10-21行):
1 private static boolean EncodeFileNew(InputStream inputStream, File encFile) { 2 try { 3 if (!encFile.exists()) { 4 LOGNew.error("加密文件创建成功!"); 5 encFile.createNewFile(); 6 } 7 InputStream fis = inputStream; 8 OutputStream fos = new FileOutputStream(encFile); 9 10 byte[] buffer = new byte[1024]; 11 int len = 0; 12 while ((len = fis.read(buffer)) != -1) { 13 byte[] outputBuffer = new byte[len]; 14 // 分别对每个字节进行异或操作 15 for (int i = 0; i < len; i++) { 16 byte b = buffer[i]; 17 b = (byte) (b ^ numOfEncAndDecNew); 18 outputBuffer[i] = b; 19 } 20 fos.write(outputBuffer, 0, len); 21 } 22 23 fis.close(); 24 fos.flush(); 25 fos.close(); 26 return true; 27 } catch (Exception e) { 28 LOGNew.error(e.getMessage(), e); 29 return false; 30 } 31 32 }

浙公网安备 33010602011771号