前端比较简单,只需在使用时引入 npm 包

const SM4 = require("gm-crypt").sm4;

下面是前端加解密操作

复制代码

 sm4Config =
  key: ,
  mode: , 
  cipherType: ,  
  iv: =  SM4(sm4Config);

复制代码

有想要细心研究的同学可以打开我们项目的 node_modules 文件夹,搜索 gm-crypt 就可以找到了,如图所示

image.png

 

 如果想要在其他项目使用,就把文件拷出来就行了,这里就不细说了。

后端的稍后补充。

复制代码

  /**
   * 和前端key一致   */
  private static String secretKey = "XXXXXXXXXXXXXXXX";  /**
   * 和前端iv一致   */
  private static String iv = "XXXXXXXXXXXXXXXX";  /**
   * cbc加密   */
  public static String encrypt(String plainTxt) {
    String cipherTxt = "";
    SymmetricCrypto sm4 = new SM4(
        Mode.CBC, Padding.PKCS5Padding, secretKey.getBytes(CharsetUtil.CHARSET_UTF_8),
        iv.getBytes(CharsetUtil.CHARSET_UTF_8));    byte[] encrypHex = sm4.encrypt(plainTxt);
    cipherTxt = Base64.encode(encrypHex);    return cipherTxt;
  }  /**
   * cbc解密   */
  public static String decrypt(String cipherTxt) {
    String plainTxt = "";    try {
      SymmetricCrypto sm4 = new SM4(
          Mode.CBC, Padding.PKCS5Padding, secretKey.getBytes(CharsetUtil.CHARSET_UTF_8),
          iv.getBytes(CharsetUtil.CHARSET_UTF_8));      byte[] cipherHex = Base64.decode(cipherTxt.trim());
      plainTxt = sm4.decryptStr(cipherHex, CharsetUtil.CHARSET_UTF_8);

    } catch (Exception e) {      // TODO Auto-generated catch block      e.printStackTrace();
    }    return plainTxt;
  }

复制代码


转自:https://www.cnblogs.com/caoxwen/p/16179683.html