From 7ae198bc9cb839906f20eda979b6c9d1bacca443 Mon Sep 17 00:00:00 2001 From: blek Date: Mon, 11 Sep 2023 23:26:01 +1000 Subject: [PATCH] make v1 be more random --- src/lib/cipher.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/lib/cipher.ts b/src/lib/cipher.ts index ed68232..ccc261a 100644 --- a/src/lib/cipher.ts +++ b/src/lib/cipher.ts @@ -1,5 +1,9 @@ import { random } from "./random"; +export async function sha256(data: string) { + return await bufferToBase64(await crypto.subtle.digest('SHA-256', new TextEncoder().encode(data))); +} + export async function bufferToBase64(buffer: BufferSource) { const base64url: string = await new Promise(r => { const reader = new FileReader() @@ -64,14 +68,14 @@ export class V1 { scrambled += String.fromCharCode(random(32, 128)) + letter; } - return { - data: await bufferToBase64(await AES256.encodeStr(scrambled, this.aes256secret)), - made_at: Date.now() - } + return [ + (await sha256(Math.random().toString())).substring(0, 6), + await bufferToBase64(await AES256.encodeStr(scrambled, this.aes256secret)) + ] } - static async decode(data: { data: string }): Promise { - const encrypted = base64ToArrayBuffer(data.data); + static async decode(data: [string, string]): Promise { + const encrypted = base64ToArrayBuffer(data[1]); const scrambled = await AES256.decodeToStr(encrypted, this.aes256secret); let unscrambled = ''; for (let i = 0; i != scrambled.length; i++) {