// 引入 SM4 加密库
const sm4 = require('sm-crypto').sm4;
// 定义加密函数
function encrypt(data, key) {
// 将数据和密钥转换为字节数组
let dataBytes = sm4.strToBytes(data);
let keyBytes = sm4.strToBytes(key);
// 使用 SM4 算法进行加密
let encrypted = sm4.cryptEcb(keyBytes, dataBytes, true);
// 将加密后的结果转换为十六进制字符串
return sm4.bytesToHexStr(encrypted);
}
// 定义解密函数
function decrypt(encryptedData, key) {
// 将加密数据和密钥转换为字节数组
let encryptedBytes = sm4.hexStrToBytes(encryptedData);
let keyBytes = sm4.strToBytes(key);
// 使用 SM4 算法进行解密
let decrypted = sm4.cryptEcb(keyBytes, encryptedBytes, false);
// 将解密后的结果转换为字符串
return sm4.bytesToStr(decrypted);
}
// 示例用法
let key = '0123456789abcdef'; // 16 字节的密钥
let data = 'Hello, SM4!';
let encryptedData = encrypt(data, key);
console.log('Encrypted:', encryptedData);
let decryptedData = decrypt(encryptedData, key);
console.log('Decrypted:', decryptedData);
require
方法引入 sm-crypto
库中的 sm4
模块。encrypt(data, key)
函数接收两个参数:要加密的数据 data
和密钥 key
。sm4.strToBytes
将字符串转换为字节数组。sm4.cryptEcb
进行加密,返回加密后的字节数组。sm4.bytesToHexStr
将加密后的字节数组转换为十六进制字符串。decrypt(encryptedData, key)
函数接收两个参数:加密后的数据 encryptedData
和密钥 key
。sm4.hexStrToBytes
将十六进制字符串转换为字节数组。sm4.cryptEcb
进行解密,返回解密后的字节数组。sm4.bytesToStr
将解密后的字节数组转换为字符串。key
和要加密的数据 data
。encrypt
函数进行加密,并打印加密后的结果。decrypt
函数进行解密,并打印解密后的结果。上一篇:js nan
下一篇:js change事件
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站