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);