mirror of
https://github.com/ThaUnknown/miru.git
synced 2026-05-07 00:49:37 +00:00
52 lines
1.6 KiB
TypeScript
52 lines
1.6 KiB
TypeScript
import { arr2hex, arr2text, bin2hex, hex2arr, hex2bin, text2arr } from 'uint8-util'
|
|
|
|
// could use a simple XOR encryption/decryption but meh, some1 could easily brute force it
|
|
const key = new Uint8Array([104, 97, 121, 97, 115, 101, 45, 111, 118, 101, 114, 45, 97, 108, 108, 45, 251, 249, 0, 204, 242, 221, 119, 44, 147, 27, 83, 227, 225, 179, 149, 80, 70, 163, 58, 97, 201, 1, 10, 33, 78, 172, 195, 239, 171, 119, 51, 199, 127, 248, 221, 31, 90, 114, 200, 255, 252, 158, 158, 57, 245, 153, 44, 126, 130, 232, 230, 192, 0, 223, 204, 137, 211, 115, 33, 42, 68, 227, 65, 161, 17, 116, 138, 195, 51, 51, 181, 183, 124, 119, 161, 74, 202, 21, 182, 195, 134, 198, 191, 182, 223, 205, 60, 175, 207, 223, 232, 94, 133, 70, 10, 127, 100, 170, 109, 22])
|
|
|
|
const derived = (async () => {
|
|
const keyMaterial = await crypto.subtle.importKey(
|
|
'raw',
|
|
key,
|
|
'PBKDF2',
|
|
false,
|
|
['deriveKey']
|
|
)
|
|
|
|
return await crypto.subtle.deriveKey(
|
|
{
|
|
name: 'PBKDF2',
|
|
salt: key,
|
|
iterations: 100000,
|
|
hash: 'SHA-256'
|
|
},
|
|
keyMaterial,
|
|
{
|
|
name: 'AES-GCM',
|
|
length: 256
|
|
},
|
|
false,
|
|
['encrypt', 'decrypt']
|
|
)
|
|
})()
|
|
|
|
export async function encryptMessage (message: string) {
|
|
return hex2bin(arr2hex(new Uint8Array(await crypto.subtle.encrypt(
|
|
{
|
|
name: 'AES-GCM',
|
|
iv: key
|
|
},
|
|
await derived,
|
|
text2arr(message)
|
|
))))
|
|
}
|
|
|
|
export async function decryptMessage (encryptedMessage: string) {
|
|
return arr2text(await crypto.subtle.decrypt(
|
|
{
|
|
name: 'AES-GCM',
|
|
iv: key
|
|
},
|
|
await derived,
|
|
hex2arr(bin2hex(encryptedMessage))
|
|
))
|
|
}
|