• 大小: 139KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: 其他
  • 标签: SM3SM4在线  

资源简介

通过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\.mymetadata
     文件        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.xml
     文件          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.xml
     文件        1877  2018-04-18 18:03  sm\pom.xml
     目录           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.xml
     文件        1516  2018-04-09 13:01  sm\src\artery-hibernate.xml
     文件        3548  2018-04-09 15:25  sm\src\artery-login.xml
     文件        2406  2018-04-18 18:21  sm\src\artery-mvc.xml
     目录           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个文件信息

评论

共有 条评论

相关资源