Untitled
unknown
plain_text
10 months ago
1.1 kB
14
Indexable
const bufferToBase64 = (buffer: ArrayBuffer): Promise<string> => {
return new Promise((resolve, reject) => {
const blob = new Blob([buffer]);
const reader = new FileReader();
reader.onloadend = () => {
const base64 = (reader.result as string).split(',')[1];
resolve(base64);
};
reader.onerror = () => reject(new Error('FileReader error'));
reader.readAsDataURL(blob);
});
};
const encryptJson = async (jsonData: any) => {
const keyBytes = Uint8Array.from(atob(aesKeyBase64), (c) => c.charCodeAt(0));
const iv = crypto.getRandomValues(new Uint8Array(12));
const key = await crypto.subtle.importKey(
"raw",
keyBytes,
{ name: "AES-GCM" },
false,
["encrypt"]
);
const encoded = new TextEncoder().encode(JSON.stringify(jsonData));
const ciphertext = await crypto.subtle.encrypt(
{ name: "AES-GCM", iv },
key,
encoded
);
const encryptedData = await bufferToBase64(ciphertext);
const encodedIV = await bufferToBase64(iv.buffer);
return {
encryptedData,
iv: encodedIV,
};
}Editor is loading...
Leave a Comment