使用js实现sm3,sm4加密

1.情景展示

奇葩需求经常有,这不,被要求使用js实现国密算法的加密,然后将加密结果传给后端。

如何实现?

我们可以使用sm-crypto来实现国密算法的加密与解密。

2.下载sm-crypto

如果本地安装有node.js与nvm的话,可以使用npm指令进行安装。

npm install sm-crypto -g

dist目录下存放的是压缩版。

src下放的是源码。

3.sm3

在HTML中引入js

<script src="sm3.js"></script>

加密

sm3是不可逆算法,即:只能加密,不能解密;

另外,sm3加密方式有两种:

一种是无密钥加密;

另一种是使用hmac加密。

sm3('待加密字符串')
sm3('待加密字符串', {
  mode: 'hmac',
  key: '32位16进制字符串'
})

示例

使用Java加密

两者加密结果一致。

4.sm4

在HTML中引入js

<script src="sm4.js"></script>

sm4是可逆算法,即:既可以加密,也可以解密。

说明:密钥key至少是32位16进制字符串。

加密

sm4.encrypt(data, key)

解密

sm4.decrypt(data, key)

示例

<script type="text/javascript">
	// 定义密钥:必须是 16 字节(即 32 个十六进制字符)
	const key = '0123456789abcdef0123456789abcdef';
	// 定义需要加密的数据
	const data = 'Hello, SM4!';
	// 加密
	const encrypted = sm4.encrypt(data, key);
	console.log('加密结果:', encrypted);// 
	// 解密
	const decrypted = sm4.decrypt(encrypted, key);
	console.log('解密结果:', decrypted);
</script>

我们使用Java解密试一下。

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2025-06-05 20:10  Marydon  阅读(205)  评论(0)    收藏  举报