国密算法是国家密码局制定标准的一系列算法,主要有 SM1,SM2,SM3,SM4,密钥长度和分组长度均为 128 位。其中:

  • SM1 为对称加密。其加密强度与 AES 相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。
  • SM2 为非对称加密,基于 ECC。该算法已公开。由于该算法基于 ECC,故其签名速度与秘钥生成速度都快于 RSA。ECC 256 位(SM2 采用的就是 ECC 256 位的一种)安全强度比 RSA 2048 位高,但运算速度快于 RSA。
  • SM3 消息摘要。可以用 MD5 作为对比理解。该算法已公开。校验结果为 256 位。
  • SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为 128 位。

sm-crypto 可以在微信小程序中实现 SM2、SM3、SM4 国密算法。

使用

安装 sm-crypto

从小程序基础库版本 2.2.1 或以上、及开发者工具 1.02.1808300 或以上开始,小程序支持使用 npm 安装第三方包。

npm install --save miniprogram-sm-crypto


sm2

获取密钥对

const sm2 = require('miniprogram-sm-crypto').sm2;
 
let keypair = sm2.generateKeyPairHex();
 
publicKey = keypair.publicKey; // 公钥
privateKey = keypair.privateKey; // 私钥