前端实现sha256和sm34加密方式
时间: 2023-09-16 20:14:28 浏览: 265
对于前端实现 SHA256 和 SM3-4 加密方式,可以使用 JavaScript 进行实现,具体方法如下:
1. SHA256 加密方式的实现:
```javascript
function sha256(str) {
const buffer = new TextEncoder().encode(str);
return crypto.subtle.digest('SHA-256', buffer).then(hash => {
return hex(hash);
});
}
function hex(buffer) {
const hexCodes = [];
const view = new DataView(buffer);
for (let i = 0; i < view.byteLength; i += 4) {
const value = view.getUint32(i);
const stringValue = value.toString(16);
const padding = '00000000';
const paddedValue = (padding + stringValue).slice(-padding.length);
hexCodes.push(paddedValue);
}
return hexCodes.join('');
}
```
2. SM3-4 加密方式的实现:
```javascript
function sm34(str) {
const buffer = new TextEncoder().encode(str);
return sm3.digest(buffer).then(hash => {
return hex(hash);
});
}
function hex(buffer) {
const hexCodes = [];
const view = new DataView(buffer);
for (let i = 0; i < view.byteLength; i += 4) {
const value = view.getUint32(i);
const stringValue = value.toString(16);
const padding = '00000000';
const paddedValue = (padding + stringValue).slice(-padding.length);
hexCodes.push(paddedValue);
}
return hexCodes.join('');
}
const sm3 = new SM3Digest();
```
需要注意的是,以上代码使用了 Web Crypto API 和 jsrsasign 库中的 SM3Digest 类,需要在 HTML 文件中引入以下脚本:
```html
<script src="https://cdnjs.cloudflare.com/ajax/libs/jsrsasign/10.2.0/jsrsasign-all-min.js"></script>
```
阅读全文