国密 sm2,sm3,sm4 算法纯 JavaScript 实现
2014 年国务院办公厅就颁发了《国务院办公厅转发密码局等部门关于金融领域密码应用指导意见》,指出在我国涉及到金融领域信息安全的产品和系统要自主可控,在金融领域使用国产加密标准是机构走向合规化的重要一步。常用的国密算法包括:SM2、SM3、SM4等。
特性
- 兼容 Node.js & Browsers 环境
- 支持多种数据类型
String
&ArrayBuffer
&Buffer
- 支持多种编码
hex
&utf8
&base64
安装
- npm
npm install gm-crypto
- yarn
yarn add gm-crypto
快速开始
浏览器端写法调整为
import { SM2, SM3, SM4 } from 'gm-crypto'
SM2
const { SM2 } = require('gm-crypto')const { publicKey, privateKey } = SM2.generateKeyPair()
const originalData = 'SM2 椭圆曲线公钥密码算法'const encryptedData = SM2.encrypt(originalData, publicKey, {inputEncoding: 'utf8',outputEncoding: 'base64'
})const decryptedData = SM2.decrypt(encryptedData, privateKey, {inputEncoding: 'base64',outputEncoding: 'utf8'
})
SM3
const { SM3 } = require('gm-crypto')console.log(SM3.digest('abc'))
console.log(SM3.digest('YWJj', 'base64'))
console.log(SM3.digest('616263', 'hex', 'base64'))
SM4
const { SM4 } = require('gm-crypto')const key = '0123456789abcdeffedcba9876543210' // Any string of 32 hexadecimal digits
const originalData = 'SM4 国标对称加密'/*** Block cipher modes:* - ECB: electronic codebook* - CBC: cipher block chaining*/let encryptedData, decryptedData// ECB
encryptedData = SM4.encrypt(originalData, key, {inputEncoding: 'utf8',outputEncoding: 'base64'
})
decryptedData = SM4.decrypt(encryptedData, key, {inputEncoding: 'base64',outputEncoding: 'utf8'
})// CBC
const iv = '0123456789abcdeffedcba9876543210' // Initialization vector(any string of 32 hexadecimal digits)
encryptedData = SM4.encrypt(originalData, key, {iv,mode: SM2.constants.CBC,inputEncoding: 'utf8',outputEncoding: 'hex'
})
decryptedData = SM4.decrypt(encryptedData, key, {iv,mode: SM2.constants.CBC,inputEncoding: 'hex',outputEncoding: 'utf8'
})
详情参考 https://github.com/byte-fe/gm-crypto
国密 sm2,sm3,sm4 算法纯 JavaScript 实现相关推荐
- 国密SM2,SM3,SM4的前后台(js和java)加解密写法
目录 SM2加解密 js java SM3加密 js java sm3前后台(js/java)加密不一致原因 SM4加解密 js java 之前做一个项目的时候需要用到国密SM2,SM3,SM4的加解 ...
- OpenSSL 1.1.1 新特性: 全面支持国密SM2/SM3/SM4加密算法
OpenSSL项目最近6个月添加了许多新特性, 包括对中国SM2/SM3/SM4算法的支持: SM2椭圆曲线: https://github.com/openssl/openssl/pull/4793 ...
- php gmssl,支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱GmSSL
GmSSL概述 GmSSL是一个开源的密码工具箱,支持SM2/SM3/SM4/SM9/ZUC等国密(国家商用密码)算法.SM2国密数字证书及基于SM2证书的SSL/TLS安全通信协议,支持国密硬件密码 ...
- java sm_Java国密SM2/SM3/SM4及证书
1. 使用BC库1.59版本已经可以支持国密算法SM2/SM3/SM4,某大神写的详细测试例子:https://github.com/ZZMarquis/gmhelper 2. 制作证书参考网上资料简 ...
- java sm9_一个支持国密SM2/SM3/SM4/SM9/ZUC/SSL的密码工具箱
The GmSSL Project 网址:http://gmssl.org/docs/quickstart.html 在网上闲逛时发现一个工具.SSL支持国密算法.看着比较高大上.还没有用呢.记下来. ...
- 通过网页查看服务器算法,服务器使用国密(SM2/SM3/SM4)证书,通过浏览器访问
1. Apache + Gmssl Apache 本身不支持国密,需要修改代码支持GMTLS 下载解压: wget http://archive.apache.org/dist/httpd/httpd ...
- 服务器使用国密(SM2/SM3/SM4)证书,通过浏览器访问
1. Apache + Gmssl Apache 本身不支持国密,需要修改代码支持GMTLS 下载解压: wget http://archive.apache.org/dist/httpd/httpd ...
- PB实现国密SM2/SM3/SM4算法(DLL方式)
文章目录 SM4 SM4简介 分组加密模式ECB与CBC ECB模式加密解密 CBC模式加密解密 SM3 SM3简介 SM3摘要生成 SM3WithSM2摘要生成 SM2 SM2简介 SM2签名与验签 ...
- 前端使用国密sm2和sm4进行加解密
国密SM加密 国密SM:国密算法,即国家商用密码算法.是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准.如SM系列密码,SM代表商密,即商业密码,是指用于商业的 ...
最新文章
- git上传自己的代码
- 将数据文件附加到数据库
- 阿里云容器服务新增支持Kubernetes编排系统,性能重大提升
- 操作系统:用户态和核心态的区别
- RHEL 6.x 搭建企业级FTP
- iOS - OC PList		数据存储
- Bootstrap3 警告框插件的使用方法
- php持久对象,php-在理论中具有两个外来身份的持久对象
- 电商系统设计之商品 (下)
- android服务器接口测试,使用Retrofit和Mockito进行可靠的Android API测试
- 大数据应用存在哪些安全隐患
- 设计师 VR 成型设计知识收集
- Docker简介(转)
- JDK+TOMCAT+MYSQL图文安装指南(一)
- Codeforces D. Genius‘s Gambit
- QT之二维码生成以及识别
- 泛微8.0前端通用代码
- 火车售票系统(设计模式分析)
- 数据猿·金猿榜丨2017工业大数据领域最具潜力创业公司
- NVIDIA边缘端设备(nano、tx2、xavier等)查看安装的jetpack版本
热门文章
- 怎样在应用中实现自助报表功能
- 孔庆东看金庸小说的奇情怪恋
- studio和solo哪个好_使用点评曝光beats studio3和solo pro有何区别?哪个好?图文评测详情如何...
- 模块电路选型(1)----电源模块
- Bugku-CTF之细心 (想办法变成admin)
- AJAX的全称是什么? 介绍一下AJAX
- 宽带不能上传发文件_光纤宽带和普通宽带的区别
- iphone微信小程序底部预留bar安全距离css
- python微信好友_python 获取微信好友列表的方法(微信web)
- CSS【进阶】线性径向渐变background-image:linear-gradient();background-image:radial-gradient();