SM4 是中国密码局颁布的一种分组密码算法,也称为国密 SM4。它是基于对称密钥加密算法的一种分组密码算法,具有较高的安全性和较快的加密速度。SM4 使用 128 位的密钥和 128 位的分组进行加密。
sm-crypto
是一个支持国密 SM2、SM3、SM4 等算法的 Node.js 加密库。要使用 sm-crypto
库实现 SM4 加密,请按照以下步骤操作:
- 首先,安装
sm-crypto
库。在您的项目目录中运行以下命令:
npm install sm-crypto
- 接下来,使用以下代码示例来实现 SM4 加密:
const sm4 = require('sm-crypto').sm4;
// 密钥(16 字节)
const key = '0123456789abcdef';
// 明文
const plaintext = 'Hello, world!';
// 加密
const ciphertext = sm4.encrypt(key, plaintext);
console.log('Ciphertext:', ciphertext);
在这个示例中,我们首先导入了 sm-crypto
库中的 sm4
模块。然后,我们创建了一个 16 字节的密钥和一个明文字符串。接下来,我们使用 sm4.encrypt()
函数对明文进行加密。
要解密加密后的数据,您可以使用 sm4.decrypt()
函数。
// 解密
const decrypted = sm4.decrypt(key, ciphertext);
console.log('Decrypted plaintext:', decrypted);
在这个示例中,我们使用 sm4.decrypt()
函数对密文进行解密。最后,我们将解密后的数据以字符串形式显示。
请注意,sm-crypto
库默认使用 CBC 模式和 PKCS7 填充。如果需要使用其他模式或填充方式,可以在 encrypt()
和 decrypt()
函数中指定相应的选项。例如:
const options = {
mode: 'cbc', // 可选值:'cbc'(默认)或 'ecb'
padding: 'pkcs7' // 可选值:'pkcs7'(默认)或 'none'
};
// 加密
const ciphertext = sm4.encrypt(key, plaintext, options);
// 解密
const decrypted = sm4.decrypt(key, ciphertext, options);
如果使用typescript,推荐使用库sm-crypto-v2
npm install --save sm-crypto-v2
加密验证可使用在线工具:在线SM4加密/解密
标签:SM4,加密,nodejs,sm4,加解密,crypto,sm,const From: https://blog.51cto.com/u_16352146/9618543