0
点赞
收藏
分享

微信扫一扫

nodejs中实现sm4加解密

SM4 是中国密码局颁布的一种分组密码算法,也称为国密 SM4。它是基于对称密钥加密算法的一种分组密码算法,具有较高的安全性和较快的加密速度。SM4 使用 128 位的密钥和 128 位的分组进行加密。

sm-crypto 是一个支持国密 SM2、SM3、SM4 等算法的 Node.js 加密库。要使用 sm-crypto 库实现 SM4 加密,请按照以下步骤操作:

  1. 首先,安装 sm-crypto 库。在您的项目目录中运行以下命令:

npm install sm-crypto

  1. 接下来,使用以下代码示例来实现 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加密/解密

举报

相关推荐

0 条评论