@PostMapping("/swlUploadArray")
public BaseResponse<JSONObject> swlUploadArray(@ApiParam(value = "文件资源", required = true) @RequestParam MultipartFile file) throws IOException {
BaseResponse<JSONObject> response = new BaseResponse<>();
String originalFilename = file.getOriginalFilename();
InputStream inputStream = file.getInputStream();
byte[] b = new byte[8 * 1024];
FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\迅雷下载\\" + originalFilename));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
//三、小数组循环io读取、循环加密
while ((inputStream.read(b)) != -1) {
for (int i = 0; i < b.length; i++) {
bufferedOutputStream.write(b[i] ^ 32);
}
}
//6.2用来刷新缓冲区,刷新后可以再次写出
bufferedOutputStream.flush();
inputStream.close();
bufferedOutputStream.close();
response.setCode(ReturnCodeConst.SUCCESS);
response.setMessage("加密完成");
return response;
}
@GetMapping("/swlDownloadArray")
public void swlDownloadArray(HttpServletResponse response) throws IOException {
File f2 = new File("D:\\迅雷下载\\问卷Excel导入模板.xlsx");
boolean exists = f2.exists();
FileInputStream inputStream = new FileInputStream(f2);
byte[] b = new byte[8 * 1024];
String filePath = "2.jpg";
//6.1清除buffer缓存
response.reset();
response.setContentType("application/octet-stream;charset=UTF-8");
//response.setHeader("Content-Disposition", "inline; filename="+ new String(filePath.getBytes("UTF-8"), "ISO-8859-1"));// 定义文件名
//response.setHeader("Content-Disposition", "attachment; filename="+ new String(filePath.getBytes("UTF-8"), "ISO-8859-1"));// 定义文件名
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(filePath, "UTF-8"));
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", " 0");
ServletOutputStream outputStream = response.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
long l = System.currentTimeMillis();
logger.info(String.valueOf(System.currentTimeMillis()));
int swl = 0;
while ((inputStream.read(b)) != -1) {
for (int i = 0; i < b.length; i++) {
bufferedOutputStream.write(b[i] ^ 32);
}
}
//6.2用来刷新缓冲区,刷新后可以再次写出
bufferedOutputStream.flush();
inputStream.close();
bufferedOutputStream.close();
logger.info(String.valueOf(System.currentTimeMillis()));
logger.info(String.valueOf(System.currentTimeMillis() - l));
}
@PostMapping("/one")
public void encrypt(@ApiParam(value = "文件资源") @RequestParam(required = false) MultipartFile file, String uat, String type, int k) throws Exception {
String sKey = "abcdefijklmnopqr";
byte[] raw = sKey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.ENCRYPT_MODE, skeySpec);
String originalFilename = file.getOriginalFilename();
InputStream inputStream = file.getInputStream();
FileOutputStream fileOutputStream = new FileOutputStream(new File("D:\\迅雷下载\\" + originalFilename));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(fileOutputStream);
CipherInputStream cis = new CipherInputStream(inputStream, cipher);
byte[] buffer = new byte[8 * 1024];
int r;
while ((r = cis.read(buffer)) > 0) {
bufferedOutputStream.write(buffer, 0, r);
}
//6.2用来刷新缓冲区,刷新后可以再次写出
bufferedOutputStream.flush();
cis.close();
inputStream.close();
bufferedOutputStream.close();
}
@GetMapping("/two")
public void decrypt(HttpServletResponse response) throws Exception {
String filePath = "2.jpg";
//6.1清除buffer缓存
response.reset();
response.setContentType("application/octet-stream;charset=UTF-8");
response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(filePath, "UTF-8"));
response.setHeader("Pragma", "no-cache");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Expires", " 0");
ServletOutputStream outputStream = response.getOutputStream();
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream);
File f2 = new File("D:\\迅雷下载\\" + filePath);
FileInputStream inputStream = new FileInputStream(f2);
byte[] b = new byte[8 * 1024];
String sKey = "abcdefijklmnopqr";
byte[] raw = sKey.getBytes("utf-8");
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, skeySpec);
CipherOutputStream cos = new CipherOutputStream(bufferedOutputStream, cipher);
byte[] buffer = new byte[8 * 1024];
int r;
while ((r = inputStream.read(buffer)) >= 0) {
System.out.println();
cos.write(buffer, 0, r);
}
//6.2用来刷新缓冲区,刷新后可以再次写出
cos.close();
bufferedOutputStream.flush();
inputStream.close();
bufferedOutputStream.close();
}