完善使用worker进行加密解密相关代码
This commit is contained in:
1 parent
3c2dc0f183
commit
f0e4a777d9
6 files changed
+48
-26
No files matched your search
+24
-17
@@ -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) => {
|
||||
// console.log(key)
|
||||
// key = aesjs.utils.utf8.toBytes(key)
|
||||
const encryptedBytes = await new Promise((resolve) => {
|
||||
const aesWorker = new sm4_worker()
|
||||
aesWorker.onmessage = (event) => {
|
||||
resolve(event.data)
|
||||
}
|
||||
aesWorker.postMessage({ data, key })
|
||||
})
|
||||
// var encryptedBytes = sm4.encrypt(data, key, {
|
||||
// padding: 'pkcs#7',
|
||||
// output: 'array'
|
||||
// })
|
||||
// console.log(encryptedBytes, sm4.decrypt(encryptedBytes, key,{output:'array'}))
|
||||
return new Uint8Array(encryptedBytes)
|
||||
const SM4 = {
|
||||
encrypt: async (key, data) => {
|
||||
const encryptedBytes = await new Promise((resolve) => {
|
||||
const sm4Worker = new sm4_encrypt_worker()
|
||||
sm4Worker.onmessage = (event) => {
|
||||
resolve(event.data)
|
||||
}
|
||||
sm4Worker.postMessage({ data, key })
|
||||
})
|
||||
return encryptedBytes
|
||||
},
|
||||
decrypt: async (key, data) => {
|
||||
const encryptedBytes = await new Promise((resolve) => {
|
||||
const sm4Worker = new sm4_encrypt_worker()
|
||||
sm4Worker.onmessage = (event) => {
|
||||
resolve(event.data)
|
||||
}
|
||||
sm4Worker.postMessage({ data, key })
|
||||
})
|
||||
return encryptedBytes
|
||||
}
|
||||
}
|
||||
|
||||
export default SM4
|
||||
+11
-6
@@ -2,6 +2,8 @@ import aesjs from "aes-js";
|
||||
import { Base64 } from "js-base64";
|
||||
import { saveAs } from "file-saver";
|
||||
import { sm4 } from "sm-crypto";
|
||||
import AES from './AES'
|
||||
import SM4 from './SM4'
|
||||
|
||||
const blob2Uint8Array = function (blob) {
|
||||
return new Promise((resolve, reject) => {
|
||||
@@ -19,7 +21,7 @@ const blob2Uint8Array = function (blob) {
|
||||
};
|
||||
const decrypt = (key, data) => {
|
||||
key = key.trim()
|
||||
return blob2Uint8Array(data).then(data => {
|
||||
return blob2Uint8Array(data).then(async data => {
|
||||
// 无加密
|
||||
if (key.length === 0) {
|
||||
return data;
|
||||
@@ -28,14 +30,17 @@ const decrypt = (key, data) => {
|
||||
if (key.length === 19) {
|
||||
key = [...aesjs.utils.utf8.toBytes(key.substring(3))];
|
||||
// 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;
|
||||
} else {
|
||||
// AES
|
||||
key = aesjs.utils.utf8.toBytes(key);
|
||||
var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));
|
||||
var decryptedBytes = aesCtr.decrypt(data);
|
||||
return decryptedBytes;
|
||||
// key = aesjs.utils.utf8.toBytes(key);
|
||||
// var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));
|
||||
// var decryptedBytes = aesCtr.decrypt(data);
|
||||
// return decryptedBytes;
|
||||
const decryptedBytes = await AES(key, data)
|
||||
return decryptedBytes
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
+2
-1
@@ -96,9 +96,10 @@ const encrypt = (key, data, fileName, setting, message) => {
|
||||
} else {
|
||||
if (message) message.info(`开始加密${fileName}`)
|
||||
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}加密完成`)
|
||||
}
|
||||
console.log(encrypted_data)
|
||||
return encrypted_data
|
||||
})
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ import aesjs from 'aes-js'
|
||||
self.onmessage = async function (event) {
|
||||
const data = event.data.data
|
||||
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)
|
||||
self.postMessage(encryptData)
|
||||
}
|
||||
@@ -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',
|
||||
output: 'array'
|
||||
})
|
||||
self.postMessage(encryptData)
|
||||
self.postMessage(new Uint8Array(encryptData))
|
||||
}
|
||||
Reference in new issue
Block a user