Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

js sm4

作者:飞吻狂魔   发布日期:2025-07-08   浏览:61

// 引入 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);

解释说明

  1. 引入 SM4 加密库:使用 require 方法引入 sm-crypto 库中的 sm4 模块。
  2. 定义加密函数
    • encrypt(data, key) 函数接收两个参数:要加密的数据 data 和密钥 key
    • 使用 sm4.strToBytes 将字符串转换为字节数组。
    • 使用 sm4.cryptEcb 进行加密,返回加密后的字节数组。
    • 使用 sm4.bytesToHexStr 将加密后的字节数组转换为十六进制字符串。
  3. 定义解密函数
    • decrypt(encryptedData, key) 函数接收两个参数:加密后的数据 encryptedData 和密钥 key
    • 使用 sm4.hexStrToBytes 将十六进制字符串转换为字节数组。
    • 使用 sm4.cryptEcb 进行解密,返回解密后的字节数组。
    • 使用 sm4.bytesToStr 将解密后的字节数组转换为字符串。
  4. 示例用法
    • 定义一个 16 字节的密钥 key 和要加密的数据 data
    • 调用 encrypt 函数进行加密,并打印加密后的结果。
    • 调用 decrypt 函数进行解密,并打印解密后的结果。

上一篇:js nan

下一篇:js change事件

大家都在看

js 数组对象排序

js 数组删掉第一个值

js fill

js json数组

js 数组复制

js 复制数组

js 数组拷贝

js 对象转数组

js 深拷贝数组

js 点击空白区域触发事件

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站