UNPKG

@polgubau/utils

Version:

A collection of utility functions for TypeScript

45 lines 1.3 kB
// src/functions/encryption/encryption.ts var encoder = new TextEncoder(); var decoder = new TextDecoder(); async function getKey(key) { const keyBytes = encoder.encode(key); if (keyBytes.length < 32) { throw new Error("Key must be at least 32 characters long"); } return await crypto.subtle.importKey( "raw", keyBytes.slice(0, 32), // Forzamos a 256 bits (32 bytes) { name: "AES-GCM" }, false, ["encrypt", "decrypt"] ); } async function encrypt(text, key) { const keyMaterial = await getKey(key); const iv = crypto.getRandomValues(new Uint8Array(12)); const encrypted = await crypto.subtle.encrypt( { name: "AES-GCM", iv }, keyMaterial, encoder.encode(text) ); const buffer = new Uint8Array([...iv, ...new Uint8Array(encrypted)]); return btoa(String.fromCharCode(...buffer)); } async function decrypt(encryptedText, key) { const keyMaterial = await getKey(key); const data = Uint8Array.from(atob(encryptedText), (c) => c.charCodeAt(0)); const iv = data.slice(0, 12); const encryptedData = data.slice(12); const decrypted = await crypto.subtle.decrypt( { name: "AES-GCM", iv }, keyMaterial, encryptedData ); return decoder.decode(decrypted); } export { decrypt, encrypt }; //# sourceMappingURL=encryption.mjs.map