国密即国家密码局认定的国产密码算法。

主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

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


注1:sm2只能公钥加密,私钥解密

注2:sm4分为EBC和CBC模式,目前项目中使用的是CBC模式。


C#库:BouncyCastle.Cryptography

俗称BC库

github: https://github.com/bcgit/bc-csharp

SM扩展:  https://cscoder.cn/docs/base/sm_crypto/smcrypto-cs.html


JS库:sm-crypto.js

详细介绍:https://cscoder.cn/docs/base/sm_crypto/sm-crypto-js.html

SM2非对称加密

SM4对称加密