typestar

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

  1. createHash toma bytes o una cadena y produce un digest.
  2. randomUUID es la fuente correcta para un identificador.
  3. timingSafeEqual compara secretos sin canal lateral de tiempos.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 1 de 3 en Crypto y procesos; paso 15 de 18 en Node.js.

← Anterior Siguiente →