完善使用worker进行加密解密相关代码
This commit is contained in:
1 parent
3c2dc0f183
commit
f0e4a777d9
6 files changed
+44
-22
No files matched your search
+20
-13
@@ -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
@@ -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
@@ -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
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
@@ -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))
|
||||||
}
|
}
|
||||||
Reference in new issue
Block a user