拆分部分文件

This commit is contained in:
539943419 committed 2024-03-21 20:37:10 +08:00
1 parent d5cb96d713
commit 08e7820f37
12 files changed
+448 -210

No files matched your search

+93
View File
@@ -0,0 +1,93 @@
import aesjs from "aes-js";
import { Base64 } from "js-base64";
import { sm4 } from 'sm-crypto'
// const setting = useSettingStore();
// const message = useMessage();
// 生成密钥
const generateKey = function(setting) {
if(setting.activeFuction === "不加密"){
return ''
}
var charMap = ""
for(let i of setting.activeKeyMap){
if(i === 'A-Z'){
charMap = charMap + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
}else if(i === "a-z"){
charMap = charMap + 'abcdefghijklmnopqrstuvwxyz'
}else if(i === '0-9'){
charMap = charMap + '0123456789'
}
}
var returnStr = "",
length = setting.activeFuction === "AES128" ? 16 : 32
// charMap = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
for (var i = 0; i < length; i++) {
var index = Math.round(Math.random() * charMap.length);
returnStr += charMap.substring(index, index + 1);
}
return returnStr;
};
const blob2Uint8Array = function(blob) {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.readAsArrayBuffer(blob);
reader.onload = function() {
let buffer = reader.result;
let uint8array = new Uint8Array(buffer);
resolve(uint8array);
};
reader.onerror = function() {
reject(reader.error);
};
});
};
const AES = (key,data)=>{
key = aesjs.utils.utf8.toBytes(key);
var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));
var encryptedBytes = aesCtr.encrypt(data);
return encryptedBytes;
}
const SM4 = (key,data)=>{
// console.log(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 encrypt = (key, data, fileName, setting, message) => {
return blob2Uint8Array(data).then(data => {
let encrypted_data = null
if(setting.activeFuction === "不加密"){
encrypted_data = data
}else if(setting.activeFuction != "SM4"){
message.info(`开始加密${fileName}`);
encrypted_data = AES(key,data)
message.info(`${fileName}加密完成`);
}else{
message.info(`开始加密${fileName}`);
encrypted_data = SM4(key,data)
message.info(`${fileName}加密完成`);
}
return encrypted_data
});
};
// setting为pinia存储的setting。。。
const encryptString = (key, str, setting) => {
// console.log(key)
if(setting.activeFuction === "不加密"){
return sm4.encrypt(str, 'miaospringmiaospringmiaospringao')
}else if(setting.activeFuction !== "SM4"){
key = aesjs.utils.utf8.toBytes(key);
var data = aesjs.utils.utf8.toBytes(str);
var aesCtr = new aesjs.ModeOfOperation.ctr(key, new aesjs.Counter(5));
var encryptedBytes = aesCtr.encrypt(data);
return Base64.encode(encryptedBytes);
}else{
return sm4.encrypt(str, key)
}
};
export {encrypt,encryptString,generateKey}