0


前端使用国密sm2和sm4进行加解密

国密SM加密

  1. 国密SM:国密算法,即国家商用密码算法。是由国家密码管理局认定和公布的密码算法标准及其应用规范,其中部分密码算法已经成为国际标准。如SM系列密码,SM代表商密,即商业密码,是指用于商业的、不涉及国家秘密的密码技术。

安装SM加密依赖

npm install --save sm-crypto
或
npm install --save sm-crypto --legacy-peer-deps   

SM2

封装

  1. 将sm2的加密解密方法进行封装,文件命名为sm2.js// 引入const sm2 =require('sm-crypto').sm2const cipherMode =0// 1 - C1C3C2,0 - C1C2C3,默认为1// 后端会生成密钥对// publicKey:公钥 后端提供// privateKey:私钥 后端提供const publicKey ="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"const privateKey ="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"// 加密// value:需要加密的内容exportfunctionencrypt(value){// 给后端传值时需要在加密的密文前面加04 ,这样后端才能解密正确不报错return'04'+ sm2.doEncrypt(value, publicKey, cipherMode)}// 解密// value:需要解密的密文exportfunctiondecrypt(value){// 后端传输过来的密文开头的两个字符通常也为04,因此解密时需要删除return sm2.doDecrypt(value.slice(2, value.length), privateKey, cipherMode)}

使用

// 引入sm2.js,注意文件路径不要出错import{ encrypt, decrypt }from'./sm2'// data:需要加密的数据// encryptData:加密后的密文// 若有需要则将js对象转换为字符串后进行加密:JSON.stringify(data)const encryptData =encrypt(JSON.stringify(data))// data:需要解密的密文// decryptData:解密后的数据// 若解密结果为json字符串,则可以通过JSON.parse()方法将解密结果转化为json对象const decryptData =decrypt(data)

SM4

封装

  1. 将sm4的加密解密方法进行封装,文件命名为sm4.jsconstSM4=require("gm-crypt").sm4;const pwdKey ="xxxx";//密钥 前后端一致,后端提供let sm4Config ={key: pwdKey,mode:"ecb",// 加密的方式有两种,ecb和cbc两种,看后端如何定义的,cbc需要iv参数,ecb不用iv:'1234567891011121',// 初始向量,cbc模式的第二个参数,也需要跟后端配置的一致cipherType:"base64"};const sm4Util =newSM4(sm4Config);// new一个sm4函数,将上面的sm4Config作为参数传递进去。/* * 加密工具函数 * @param {String} text 待加密文本 */exportfunctionencrypt(text){return sm4Util.encrypt(text, pwdKey);}/* * 解密工具函数 * @param {String} text 待解密密文 */exportfunctiondecrypt(text){return sm4Util.decrypt(text, pwdKey);}

使用

// 引入asm4.js,注意文件路径不要出错import{ encrypt,decrypt }from"./sm4"// data:需要加密的数据// encryptData:加密后的密文// 若有需要则将js对象转换为字符串后进行加密:JSON.stringify(data)const encryptData =encrypt(JSON.stringify(data))// data:需要解密的密文// decryptData:解密后的数据// 若解密结果为json字符串,则可以通过JSON.parse()方法将解密结果转化为json对象const decryptData =decrypt(data)
标签: 前端 javascript

本文转载自: https://blog.csdn.net/lhh_gxx/article/details/128663641
版权归原作者 二七二十七 所有, 如有侵权,请联系我们删除。

“前端使用国密sm2和sm4进行加解密”的评论:

还没有评论