使用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解密试一下。

本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/18913067
浙公网安备 33010602011771号