qh-tools
v1.0.6
Published
public utils
Downloads
7
Readme
SM2 SM4 数据加、解密
安装
npm i qh-tools
引入
import DataEncryption from "qh-tools/dist/dataEncryption.js";
使用
1、实例化
/**
* SM2PublicKey { string } sm2公钥
* SM2Privatekey { string } sm2私钥
*/
const dataEncryption = new DataEncryption(SM2PublicKey, SM2Privatekey);
2、获取 SM4 秘钥
/**
* SM4HexKey { string } 将生成的 16 位随机字符串,转换为 16 进制字符串
* SM4Encryption { string } sm2 公钥加密后的 sm4 秘钥
*/
const { SM4HexKey, SM4Encryption } = dataEncryption.generateSM4Key();
3、加密数据
/**
* requestData { object } 需要加密的数据对象
* SM4HexKey { string } 上一步获取的 sm4 16进制字符串
* return { string } 加密后的字符串
*/
const data = dataEncryption.encrypt(requestData, SM4HexKey);
4、将加密后的数据和 sm4 秘钥传给后端
// 目前测试验证时 sm4 秘钥放在了请求头 (具体秘钥放在哪 需跟后端沟通)
config.headers["encryptkey"] = SM4Encryption;
// 加密后的数据 替换到原有位置
// 例 post 请求
config.data = dataEncryption.encrypt(requestData, SM4HexKey);
// 例 get 请求
config.params = dataEncryption.encrypt(requestData, SM4HexKey);
5、数据解密
// 获取到后端返回的 sm4 秘钥 (具体后端返回的秘钥放在哪个字段 需跟后端沟通)
const SM4PrivateKey = res.headers["encryptkey"];
/**
* responseData { object } 需要解密的数据对象
* sm4PrivateKey { string } 后端返回的 sm4 秘钥, 测试验证实例中 将返回的 sm4 秘钥进行了截取处理 (是否处理 需要与后端沟通)
* return { object } 解密后的数据对象
*/
const data = dataEncryption.decrypt(responseData, sm4PrivateKey);