sm-crypto

小程序 js 库。国密算法 sm2、sm3 和 sm4 的实现。

使用此组件需要依赖小程序基础库 2.2.1 以上版本,同时依赖开发者工具的 npm 构建。具体详情可查阅官方 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; // 私钥

加密解密

const sm2 = require('miniprogram-sm-crypto').sm2;
const cipherMode = 1; // 1 - C1C3C2,0 - C1C2C3,默认为1let encryptData = sm2.doEncrypt(msgString, publicKey, cipherMode); // 加密结果
let decryptData = sm2.doDecrypt(encryptData, privateKey, cipherMode); // 解密结果

签名验签

ps:理论上来说,只做纯签名是最快的。

const sm2 = require('miniprogram-sm-crypto').sm2;// 纯签名 + 生成椭圆曲线点
let sigValueHex = sm2.doSignature(msg, privateKey); // 签名
let verifyResult = sm2.doVerifySignature(msg, sigValueHex, publicKey); // 验签结果// 纯签名
let sigValueHex2 = sm2.doSignature(msg, privateKey, {pointPool: [sm2.getPoint(), sm2.getPoint(), sm2.getPoint(), sm2.getPoint()], // 传入事先已生成好的椭圆曲线点,可加快签名速度
}); // 签名
let verifyResult2 = sm2.doVerifySignature(msg, sigValueHex2, publicKey); // 验签结果// 纯签名 + 生成椭圆曲线点 + der编解码
let sigValueHex3 = sm2.doSignature(msg, privateKey, {der: true,
}); // 签名
let verifyResult3 = sm2.doVerifySignature(msg, sigValueHex3, publicKey, {der: true,
}); // 验签结果// 纯签名 + 生成椭圆曲线点 + sm3杂凑
let sigValueHex4 = sm2.doSignature(msg, privateKey, {hash: true,
}); // 签名
let verifyResult4 = sm2.doVerifySignature(msg, sigValueHex4, publicKey, {hash: true,
}); // 验签结果// 纯签名 + 生成椭圆曲线点 + sm3杂凑(不做公钥推导)
let sigValueHex5 = sm2.doSignature(msg, privateKey, {hash: true,publicKey, // 传入公钥的话,可以去掉sm3杂凑中推导公钥的过程,速度会比纯签名 + 生成椭圆曲线点 + sm3杂凑快
});
let verifyResult5 = sm2.doVerifySignature(msg, sigValueHex5, publicKey, {hash: true,publicKey,
});

获取椭圆曲线点

const sm2 = require('miniprogram-sm-crypto').sm2;let poin = sm2.getPoint(); // 获取一个椭圆曲线点,可在sm2签名时传入

sm3

const sm3 = require('miniprogram-sm-crypto').sm3;let hashData = sm3('abc'); // 杂凑

sm4

加密

const sm4 = require('miniprogram-sm-crypto').sm4;
const key = [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10];let encryptData = sm4.encrypt([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10], key); // 加密

解密

const sm4 = require('miniprogram-sm-crypto').sm4;
const key = [0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef, 0xfe, 0xdc, 0xba, 0x98, 0x76, 0x54, 0x32, 0x10];let decryptData = sm4.decrypt([0x68, 0x1e, 0xdf, 0x34, 0xd2, 0x06, 0x96, 0x5e, 0x86, 0xb3, 0xe9, 0x4f, 0x53, 0x6e, 0x42, 0x46], key); // 解密

小程序 js 库。国密算法 sm2、sm3 和 sm4 的实现相关推荐

  1. 国密算法 SM2 SM3 SM4 及密钥生成

    国密算法 SM2 SM3 SM4 方式一:SM2密钥在线生成 SM2密钥在线生成工具 如果你没线下生成工具,可用下面2种线上生成方式之一: 1. sm2密钥在线生成(const.net.cn) 2.  ...

  2. 国密算法 SM2 SM3 SM4分别用作什么

    非对称加密SM2(可选支持国内SM9)算法实现数据的签名.验签和加解密对称密钥, SM3密码杂凑算法实现数据摘要的生成, 对称密钥SM4加密算法实现对数据内容的加密.

  3. 国密算法 SM2公钥密码 SM3杂凑算法 SM4分组密码 python代码完整实现

    包含SM2公钥密码.SM3杂凑算法和SM4分组密码的国密算法完整工具包完成了.此前分别发布过上述三个算法的代码: SM2:国密算法 SM2 公钥加密 非对称加密 数字签名 密钥协商 python实现完 ...

  4. 国密算法(SM2,SM3,SM4)完善与算法辅助工具开发

    国密算法SM2,SM3和改名发布的SM4的应用好像越来越多了.首先是国密SM2证书的升级,国内CA服务商要完成SM2算法证书支持,之后是国密算法在金融领域进行推广,新近编订的PBOC标准的增强安全部分 ...

  5. 国密算法SM2证书制作

    原文链接:http://www.jonllen.com/jonllen/work/162.aspx 国密算法SM2证书制作 分类:工作 大中小 前段时间将系统的RSA算法全部升级为SM2国密算法,密码 ...

  6. c++国密算法SM2加密解密demo

    c++国密算法SM2加密解密 一.代码 一.代码 封装加密.解密接口: 加密接口: Encrpt_SM2() 解密接口:Decrypt_SM2() 加密解密结果可以和nodejs的模块sm-crypt ...

  7. 国家医保移动支付国密算法SM2签名验签、SM4加解密DLL

    国家医保移动支付国密算法SM2签名验签.SM4加解密DLL 支持医保移动支付(国家统一版), 已知省份有广西.贵州.安徽.河北.黑龙江.湖南.吉林.江苏.四川.新疆等各地方. DLL,非.net开发, ...

  8. 国密算法—SM2介绍及基于BC的实现

    国密算法-SM2介绍及基于BC的实现 文章目录 国密算法-SM2介绍及基于BC的实现 简介 私钥 公钥 数据格式 密钥数据格式 私钥数据格式 公钥数据格式 加密数据格式 签名数据格式 计算过程 生成密 ...

  9. ec java sm2证书_国密算法SM2证书制作

    前段时间将系统的RSA算法全部升级为SM2国密算法,密码机和UKey硬件设备大都同时支持RSA和SM2算法,只是应用系统的加解密签名验证需要修改,这个更改底层调用的加密动态库来,原来RSA用的对称加密 ...

最新文章

  1. 2019年这50个Kafka面试题,你知道答案么?
  2. 每日记载内容总结32
  3. 《Fabric 云存储的电子健康病历系统》(2)病历结构体 Records
  4. 你所未知的3种 Node.js 代码优化方式
  5. springboot整合websocket实现群聊
  6. python去除数组缺失值_动态数组的应用,VBA中如何利用动态数组去除重复值的第二讲...
  7. Alcatraz插件安装问题
  8. golang map的无序性验证
  9. pyqt5搭建的简单的图像处理界面_PyQt5 布局浅析
  10. 新款iPhone SE预约量超40万,拼多多已经安排上,击穿底价2999元?
  11. 这五件事发生的时候,就是 ICO 泡沫破裂的那一天
  12. poj 3322 Bloxorz I (bfs+辅助数组减代码量)
  13. 安装卡主_吸顶灯怎么安装 吸顶灯安装方法【技巧】
  14. Java虚拟机学习(四)
  15. java手写-txt大文本分割
  16. 深圳大学本科毕业论文答辩PPT模板
  17. 「Wekan」- 看板工具 @20210403
  18. 手机微信中的文档存放位置
  19. ubuntu 下使用 Python 和 SL4A 的 Android 应用程序构建您自己的android开发环境
  20. [阶段4 企业开发进阶] 5. Netty

热门文章

  1. JAVA字符流InputStreamReader读取文本
  2. linux下qt和wine,Ubuntu下安装wine详细介绍
  3. 福建师范大学2020年8月计算机应用基础,福建师范大学2020年8月课程考试《计算机应用基础》作业考核试题...
  4. openSUSE安装搜狗输入法-成功经验
  5. 《新概念英语3》大概相当于什么水平
  6. 重点人员动态管控系统开发,合成作战平台建设方案
  7. 搞电脑的必看,微软sysinternals超级工具包
  8. wordpress使用_如何使用SearchWP改进WordPress搜索
  9. 架构师速成之路 架构师速成-如何高效编程 for java
  10. iPhone ipa 软件破解工具 Clutch 使用教程