资源简介
通过SM3算法杂凑用户原始密钥形成新的密钥,将新密钥作为SM4加密算法的密钥。
系统采用Spring MVC开发,其中使用了artery(封装了spring),兼容spring。
代码片段和文件信息
package com.cczu.sm.controller;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.bouncycastle.util.encoders.Hex;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import com.cczu.sm.entity.SM3Digest;
import com.cczu.sm.entity.SM4;
import com.cczu.sm.entity.SM4Utils;
import com.cczu.sm.entity.SM4_Context;
import com.cczu.sm.entity.Util;
@Controller
public class SmController {
@RequestMapping(“/sm“)
@ResponseBody
public void getFile(String optionsRadiosinline3
String optionsRadiosinline2 String optionsRadiosinline
String key MultipartFile mpfile) throws Exception {
String filename = mpfile.getOriginalFilename();
String mykey = key;
String myoption = optionsRadiosinline;
System.out.println(“密钥:“ + mykey + “\n“ + “文件名:“ + filename + “\n“
+ “功能选择:“ + myoption);
byte[] input = mpfile.getBytes();
//SM3杂凑密钥
byte[] md = new byte[32];
byte[] msg1 = mykey.getBytes();
SM3Digest sm3 = new SM3Digest();
sm3.update(msg1 0 msg1.length);
sm3.doFinal(md 0);
String s = new String(Hex.encode(md)).substring(0 16).toUpperCase();
// System.out.println(“杂凑密钥:“ + s);
//SM4加密
//optionsRadiosinline等于1加密,等于2解密
//optionsRadiosinline2等于3ECB模式,等于4CBC模式
if (optionsRadiosinline.equals(“1“)) {
//SM4设置加密密钥
SM4 s4 = new SM4();
SM4_Context ctx = new SM4_Context();
ctx.isPadding = true;
ctx.mode = SM4.SM4_ENCRYPT;
byte[] keyBytes = s.getBytes();
s4.sm4_setkey_enc(ctx keyBytes);
if (optionsRadiosinline2.equals(“3“)) {
//ECB模式
String path = ““;
//等于5上传保存服务器,等于6上传操作后下载
if (optionsRadiosinline3.equals(“5“)) {
path = “F:\\MyEclipse 9Workspaces\\sm\\smfile\\“;
} else {
path = “F:\\MyEclipse 9Workspaces\\sm\\smfiledown\\“;
}
File file = new File(path + filename + “.encecb“);
if (file.exists()) {
file.delete();
file.createNew
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-04-25 17:44 sm\
文件 600 2018-04-09 12:59 sm\.classpath
目录 0 2018-04-09 12:59 sm\.myeclipse\
文件 275 2018-04-09 12:59 sm\.myme
文件 1923 2018-04-09 15:18 sm\.project
目录 0 2018-04-25 17:44 sm\.settings\
文件 493 2018-04-09 12:59 sm\.settings\.jsdtscope
文件 125 2018-04-22 21:49 sm\.settings\com.genuitec.eclipse.core.prefs
文件 461 2018-04-09 12:59 sm\.settings\org.eclipse.jdt.core.prefs
文件 436 2018-04-09 12:59 sm\.settings\org.eclipse.wst.common.component
文件 252 2018-04-09 12:59 sm\.settings\org.eclipse.wst.common.project.facet.core.xm
文件 49 2018-04-09 12:59 sm\.settings\org.eclipse.wst.jsdt.ui.superType.container
文件 6 2018-04-09 12:59 sm\.settings\org.eclipse.wst.jsdt.ui.superType.name
文件 271 2018-04-09 12:59 sm\.settings\org.maven.ide.eclipse.prefs
文件 358 2018-04-09 13:01 sm\artery.xm
文件 1877 2018-04-18 18:03 sm\pom.xm
目录 0 2018-04-25 16:41 sm\smfile\
目录 0 2018-04-25 16:39 sm\smfiledown\
目录 0 2018-04-25 17:44 sm\src\
文件 4015 2018-04-09 15:20 sm\src\artery-context.xm
文件 1516 2018-04-09 13:01 sm\src\artery-hibernate.xm
文件 3548 2018-04-09 15:25 sm\src\artery-login.xm
文件 2406 2018-04-18 18:21 sm\src\artery-mvc.xm
目录 0 2018-04-09 13:03 sm\src\com\
目录 0 2018-04-09 13:03 sm\src\com\cczu\
目录 0 2018-04-25 17:44 sm\src\com\cczu\sm\
目录 0 2018-04-25 16:45 sm\src\com\cczu\sm\controller\
文件 8934 2018-04-25 17:38 sm\src\com\cczu\sm\controller\SmController.java
目录 0 2018-04-25 17:44 sm\src\com\cczu\sm\entity\
文件 3188 2018-04-09 13:24 sm\src\com\cczu\sm\entity\Cipher.java
文件 3388 2018-04-09 13:24 sm\src\com\cczu\sm\entity\SM2.java
............此处省略66个文件信息
评论
共有 条评论