微信小程序国密算法实现库sm-crypto
1|0sm-crypto简介
摘要:该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。为非对称加密,基于。无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为位。可以在微信小程序中实现国密算法。
国密算法是国家密码局制定标准的一系列算法,主要有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国密算法。
2|0前期准备
2|1sm-crypto安装
查看node和npm配置情况
若发现无法查找命令node和npm,证明还未安装nodejs,可以参考下面博客链接进行安装配置
node安装进
进行安装
使用以下指令进行安装
npm install --save miniprogram-sm-crypto
3|0算法实现
3|1sm-crypto算法实现流程图
3|2sm2算法实现
实现sm2加解密
代码
运行结果
实现sm2签名验签
生成公私钥对:
这里有五中验签方式:
纯签名
代码
运行结果
纯签名 + 生成椭圆曲线点
代码
运行结果
纯签名 + 生成椭圆曲线点 + der编解码
代码
运行结果
纯签名 + 生成椭圆曲线点 + sm3杂凑
代码
运行结果
纯签名 + 生成椭圆曲线点 + sm3杂凑(不做公钥推导)
代码
运行结果
3|3sm3算法实现
代码
运行结果
验证
3|4sm4算法实现
代码
运行结果
其他加密方式
非使用默认使用 pkcs#7 填充
代码
加密:
let encryptData = sm4.encrypt(msg, key, {padding: 'none'}) // 加密,不使用 padding
解密:
let decryptData = sm4.decrypt(encryptData, key, {padding: 'none'}) // 解密,不使用 padding
结果
字节数组形式加解密
代码:
运行结果:
其元素值对应Acsii代码值
cbc 模式加解密
代码:
运行结果
至于什么是cbc模式————分组链接加密
即将明文分组在于上一个密文分组异或后再进行加密的一种模式
具体详情见cbc模式
__EOF__

本文链接:https://www.cnblogs.com/1314xhuan/p/16929741.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
2020-11-27 熟悉编程语言