完善使用worker进行加密解密相关代码

This commit is contained in:
539943419 committed 2024-07-19 17:24:08 +08:00
1 parent 3c2dc0f183
commit f0e4a777d9
6 files changed
+44 -22

No files matched your search

+20 -13
View File
@@ -1,19 +1,26 @@
import sm4_worker from '@/worker/sm4?worker' import sm4_encrypt_worker from '@/worker/sm4_encrypt?worker'
export default async (key, data) => { const SM4 = {
// console.log(key) encrypt: async (key, data) => {
// key = aesjs.utils.utf8.toBytes(key)
const encryptedBytes = await new Promise((resolve) => { const encryptedBytes = await new Promise((resolve) => {
const aesWorker = new sm4_worker() const sm4Worker = new sm4_encrypt_worker()
aesWorker.onmessage = (event) => { sm4Worker.onmessage = (event) => {
resolve(event.data) resolve(event.data)
} }
aesWorker.postMessage({ data, key }) sm4Worker.postMessage({ data, key })
}) })
// var encryptedBytes = sm4.encrypt(data, key, { return encryptedBytes
// padding: 'pkcs#7', },
// output: 'array' decrypt: async (key, data) => {
// }) const encryptedBytes = await new Promise((resolve) => {
// console.log(encryptedBytes, sm4.decrypt(encryptedBytes, key,{output:'array'})) const sm4Worker = new sm4_encrypt_worker()
return new Uint8Array(encryptedBytes) sm4Worker.onmessage = (event) => {
resolve(event.data)
}
sm4Worker.postMessage({ data, key })
})
return encryptedBytes
}
} }
export default SM4
+11 -6
View File
@@ -2,6 +2,8 @@ import aesjs from "aes-js";
import { Base64 } from "js-base64"; import { Base64 } from "js-base64";
import { saveAs } from "file-saver"; import { saveAs } from "file-saver";
import { sm4 } from "sm-crypto"; import { sm4 } from "sm-crypto";
import AES from './AES'
import SM4 from './SM4'
const blob2Uint8Array = function (blob) { const blob2Uint8Array = function (blob) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
@@ -19,7 +21,7 @@ const blob2Uint8Array = function (blob) {
}; };
const decrypt = (key, data) => { const decrypt = (key, data) => {
key = key.trim() key = key.trim()
return blob2Uint8Array(data).then(data => { return blob2Uint8Array(data).then(async data => {
// 无加密 // 无加密
if (key.length === 0) { if (key.length === 0) {
return data; return data;
@@ -28,14 +30,17 @@ const decrypt = (key, data) => {
if (key.length === 19) { if (key.length === 19) {
key = [...aesjs.utils.utf8.toBytes(key.substring(3))]; key = [...aesjs.utils.utf8.toBytes(key.substring(3))];
// console.log([...data]) // console.log([...data])
var decryptedBytes = new Uint8Array(sm4.decrypt([...data], key, { output: "array" })); // var decryptedBytes = new Uint8Array(sm4.decrypt([...data], key, { output: "array" }));
let decryptedBytes = await SM4.decrypt(key, data)
return decryptedBytes; return decryptedBytes;
} else { } else {
// AES // AES
key = aesjs.utils.utf8.toBytes(key); // key = aesjs.utils.utf8.toBytes(key);
var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5)); // var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));
var decryptedBytes = aesCtr.decrypt(data); // var decryptedBytes = aesCtr.decrypt(data);
return decryptedBytes; // return decryptedBytes;
const decryptedBytes = await AES(key, data)
return decryptedBytes
} }
}); });
}; };
+2 -1
View File
@@ -96,9 +96,10 @@ const encrypt = (key, data, fileName, setting, message) => {
} else { } else {
if (message) message.info(`开始加密${fileName}`) if (message) message.info(`开始加密${fileName}`)
key = [...aesjs.utils.utf8.toBytes(key.substring(3))] key = [...aesjs.utils.utf8.toBytes(key.substring(3))]
encrypted_data = await SM4(key, data) encrypted_data = await SM4.encrypt(key, data)
if (message) message.info(`${fileName}加密完成`) if (message) message.info(`${fileName}加密完成`)
} }
console.log(encrypted_data)
return encrypted_data return encrypted_data
}) })
} }
+1 -1
View File
@@ -3,7 +3,7 @@ import aesjs from 'aes-js'
self.onmessage = async function (event) { self.onmessage = async function (event) {
const data = event.data.data const data = event.data.data
const key = event.data.key const key = event.data.key
var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(0)) var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(7058))
const encryptData = aesCtr.encrypt(data) const encryptData = aesCtr.encrypt(data)
self.postMessage(encryptData) self.postMessage(encryptData)
} }
+9
View File
@@ -0,0 +1,9 @@
import { sm4 } from 'sm-crypto'
self.onmessage = async function (event) {
const data = event.data.data
const key = event.data.key
self.postMessage(
new Uint8Array(sm4.decrypt([...data], key, { output: 'array' }))
)
}
@@ -7,5 +7,5 @@ self.onmessage = async function (event) {
padding: 'pkcs#7', padding: 'pkcs#7',
output: 'array' output: 'array'
}) })
self.postMessage(encryptData) self.postMessage(new Uint8Array(encryptData))
} }