前端通过js实现通过SM2 加密数据js怎么写
时间: 2024-05-16 09:16:11 浏览: 77
使用SM2算法加密数据可以使用jsrsasign库。以下是一个简单的示例代码:
1. 下载jsrsasign库并在HTML文件中引入。
```html
<script src="https://kjur.github.io/jsrsasign/jsrsasign-latest-all-min.js"></script>
```
2. 定义加密函数。
```javascript
function sm2Encrypt(publicKey, plaintext) {
// 将公钥转换为Hex字符串
var publicKeyHex = publicKey.toString();
// 生成SM2加密对象
var sm2Cipher = new KJUR.crypto.Cipher({
alg: "SM2",
prov: "cryptojs"
});
// 加载公钥
sm2Cipher.setPublicKey(publicKeyHex);
// 将明文转换为UTF-8编码的字符串
var plaintextString = KJUR.crypto.Util.Utf8ToHex(plaintext);
// 加密
var ciphertext = sm2Cipher.encrypt(plaintextString);
// 将加密结果转换为Base64编码的字符串
var ciphertextBase64 = KJUR.crypto.Util.encode64(ciphertext);
return ciphertextBase64;
}
```
3. 调用加密函数。
```javascript
// 公钥
var publicKey = "044e4b883bf6c1ba6f5d01d3c5f45e9d0a4bbc24597b7440c9d30e5a9a763a0c5c7c5b8f4c3b7c2e2567b4a6c8b0f5a684de6b1c6b07c4c66c1653b2d8b8e2c8f";
// 明文
var plaintext = "Hello, world!";
// 加密
var ciphertext = sm2Encrypt(publicKey, plaintext);
// 输出加密结果
console.log(ciphertext);
```
在以上示例代码中,我们使用了jsrsasign库的KJUR.crypto.Cipher类来实现SM2加密。在加密时,需要传入公钥和明文,加密结果为Base64编码的字符串。
阅读全文