Encontré una pregunta similar aquí , pero carece de información sobre la codificación "binaria". TextEncoder
(aparentemente) no es un equivalente de "binario" en Deno.
Aquí hay un ejemplo:
Deno
const str = "ºRFl¶é(÷LõÎW0 Náò8ìÉPPv\0"; const bytes = new TextEncoder().encode(str); console.log(crypto.createHash("sha256").update(bytes).digest("hex"));
Salidas: 65e16c433fdc795b29668dc1d189b79f2b809dc4623b03c0b9c551bd83d67069
Nodo
const str = "ºRFl¶é(÷LõÎW0 Náò8ìÉPPv\0"; const buffer = Buffer.from(str, "binary"); console.log(crypto.createHash("sha256").update(buffer).digest("hex"));
Salidas del nodo: fb6d4a2f86e91b13fe2d5a6d2e6ebb9b6f66e18a733b68acbf9ac3c5e56571d0
La codificación binary
(obsoleta) del nodo es en realidad latin-1
(ISO-8859-1).
Suponiendo que su cadena no use caracteres fuera de ese rango, puede crear una matriz de bytes convirtiendo los caracteres individuales a sus valores de unidad de código UTF-16:
import { createHash } from "https://deno.land/std/hash/mod.ts"; const str = "ºRFl¶é(÷LõÎW0 Náò8ìÉPPv\0"; const bytes = Uint8Array.from([...str].map(c => c.charCodeAt(0))); console.log(createHash("sha256").update(bytes).toString());
Que, según sea necesario, genera:
fb6d4a2f86e91b13fe2d5a6d2e6ebb9b6f66e18a733b68acbf9ac3c5e56571d0