sm-crypto是一个基于Node.js的密码学库,用于提供各种加密、解密、签名和验证功能。它是为了与国密算法(中国密码算法标准)兼容而设计的。
以下是sm-crypto库的一些主要功能:
npm install sm-crypto
const smCrypto = require('sm-crypto');
const sm3_hash = smCrypto.sm3('hello word');
console.log(sm3_hash)
 
const smCrypto = require('sm-crypto');
const sm4 = smCrypto.sm4;
const key = '0123456789ABCDEF0123456789ABCDEF'; // 设置SM4密钥(128位,16字节)
const mode = 'ecb'; // 设置SM4加解密模式(ecb、cbc、ctr等)
// 加密数据
const plaintext = 'Hello, SM4!';
const ciphertext = sm4.encrypt(plaintext, key, { mode });
console.log('加密数据:', ciphertext);
// 解密数据
const decryptedText = sm4.decrypt(ciphertext, key, { mode });
console.log('解密数据:', decryptedText);
 
const smCrypto = require('sm-crypto');
const { publicKey, privateKey } = smCrypto.sm2.generateKeyPairHex();// 生成密钥对
const plaintext = 'Hello, world!';// 明文数据
const ciphertext = smCrypto.sm2.doEncrypt(plaintext, publicKey, 1);// 加密
const decryptedText = smCrypto.sm2.doDecrypt(ciphertext, privateKey, 1);// 解密
console.log('加密原数据:', plaintext);
console.log('加密后:', ciphertext);
console.log('解密后:', decryptedText);
const signature = smCrypto.sm2.doSignature(plaintext, privateKey);// 数字签名
const isValidSignature = smCrypto.sm2.doVerifySignature(plaintext, signature, publicKey);// 验证签名
console.log('签名原数据:', plaintext);
console.log('数字签名:', signature);
console.log('签名验证结果:', isValidSignature);