需求:使用国密SM4进行前端加密,后台解密
java解密代码

<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.6.6</version>
</dependency>

import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.SM4;
import cn.hutool.crypto.symmetric.SymmetricCrypto;
  
    String decryptStr(String str) {
        if (StringTool.empty(str)) {
            return "密码为空";
        }
        //国密SM4解密
        String pwd = str.trim();
        SymmetricCrypto sm4 = new SM4(Mode.CBC, Padding.PKCS5Padding, "HTHTqQq314159@26".getBytes(), "HTHTqQq314159@26".getBytes());
        byte[] cipherHex = Base64.decode(pwd);
        pwd = sm4.decryptStr(cipherHex);
        return pwd;
    }

js加密代码

 //sm4加密  "gm-crypt": "^0.0.2",安装依赖npm install gm-crypt 

    encryption (passWord) {
      const SM4 = require('gm-crypt').sm4;
      let sm4Config = {
        //配置sm4参数
        key: 'HTHTqQq314159@26', //这里这个key值是跟后端要的
        mode: 'cbc', // 加密的方式有两种,ecb和cbc两种,也是看后端如何定义的,不过要是cbc的话下面还要加一个iv的参数,ecb不用
        iv: 'HTHTqQq314159@26',
        cipherType: 'base64',
      };
      let sm4 = new SM4(sm4Config);
      let Pwd = sm4.encrypt(passWord);
      return Pwd;
    },
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐