拆分部分文件
This commit is contained in:
1 parent
d5cb96d713
commit
08e7820f37
12 files changed
+448
-210
No files matched your search
@@ -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}
|
||||
Reference in new issue
Block a user