Hashes y valores aleatorios en JavaScript
Digests, UUID y la comparación que no filtra tiempos.
import { createHash, createHmac, randomUUID, randomBytes,
timingSafeEqual } from "node:crypto";
const digest = createHash("sha256").update("lang=go&tpm=104").digest("hex");
console.log(digest.slice(0, 16), digest.length);
const signature = createHmac("sha256", "secret").update("payload")
.digest("hex");
console.log(signature.length);
const uuid = randomUUID();
console.log(uuid.length, uuid.split("-").length);
console.log(randomBytes(8).toString("base64url").length);
const a = Buffer.from(signature);
console.log(timingSafeEqual(a, Buffer.from(signature)));
Cómo funciona
createHashtoma bytes o una cadena y produce un digest.randomUUIDes la fuente correcta para un identificador.timingSafeEqualcompara secretos sin canal lateral de tiempos.
Palabras clave y builtins usados aquí
constfromimport
El intento, en números
- Líneas
- 16
- Caracteres a escribir
- 565
- Tokens
- 149
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 81 segundos.
Paso 1 de 3 en Crypto y procesos; paso 15 de 18 en Node.js.