Herramientas de desarrollo · Calculadora de hash SHA
Cómo SubtleCrypto.digest calcula un hash SHA-256 en el navegador
· Cómo funciona
sha-256 criptografía apis del navegador
Todos los navegadores modernos pueden codificar bytes de forma nativa a través de Web Crypto. Esta publicación sigue una cadena desde TextEncoder hasta crypto.subtle.digest hasta un resumen hexadecimal y explica las restricciones de cada paso.
Un hash sin instalación de npm: las situaciones en las que un resumen nativo supera a una biblioteca incluida
Puede calcular un resumen para un valor de texto corto sin instalar un paquete de hash ni publicar datos en un sitio web de hash remoto. Los navegadores exponen crypto.subtle.digest en orígenes seguros. Un hash es una huella digital determinista de bytes de longitud fija; no oculta la entrada ni prueba quién la proporcionó. ToolAcre utiliza la implementación del navegador en lugar de enviar un algoritmo SHA escrito a mano y mantiene la cadena en hash en la pestaña.
El texto no son bytes: codificar la entrada con TextEncoder en UTF-8 antes del hash y por qué este paso decide la respuesta
El texto "café" y los bytes introducidos en un hash no son el mismo tipo de objeto. TextEncoder asigna la cadena a UTF-8 bytes (63 61 66 C3 A9 para café), mientras que una conversión ingenua de Latin-1 habría usado E9 para el carácter final y habría producido un resumen diferente. Incluso el texto visualmente idéntico puede tener diferentes formas de normalización Unicode. Acuerde la codificación y la normalización antes de comparar hashes entre JavaScript, una CLI y un servidor. El modo de texto de ToolAcre realiza explícitamente su conversión UTF-8 antes del hash.
La llamada de resumen: crypto.subtle.digest con un nombre de algoritmo y un ArrayBuffer, y por qué devuelve una promesa
crypto.subtle.digest("SHA-256", bytes) devuelve una Promesa porque el trabajo criptográfico puede ser asincrónico; espérelo antes de leer el resultado. El método toma todo el búfer de entrada en lugar de un iterador de transmisión. SHA-256 emite 256 bits (32 bytes) independientemente de si la entrada tuvo tres caracteres o tres millones. La restricción de contexto seguro significa que se requiere HTTPS o localhost para la API SubtleCrypto, y la herramienta informa su ausencia en lugar de inventar una alternativa.
De ArrayBuffer a hexadecimal: convertir los bytes del resultado en la cadena de 64 caracteres que la gente reconoce
La Promesa se resuelve en un ArrayBuffer de bytes, no en la conocida cadena de dígitos hexadecimales. Convierta cada byte en dos caracteres de base 16 con un cero a la izquierda según sea necesario, lo que produce exactamente 64 caracteres en minúscula para SHA-256. Esta representación hexadecimal duplica la longitud del 32 bytes, pero no cambia el resumen. Base64 podría representar el mismo 32 bytes de forma más compacta; una comparación sólo tiene sentido después de confirmar que el algoritmo, la codificación de entrada y la representación de salida coinciden.
Ejemplo resuelto: aplicar hash a una cadena corta paso a paso, mostrando los bytes en cada etapa
Para el texto ASCII abc, UTF-8 produce los bytes 61 62 63. SHA-256 de esos bytes exactos es ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad. Pruebe esto en ToolAcre y en otra implementación de hash confiable: cambiar abc a abc seguido de una nueva línea da un resultado diferente. Si los resultados difieren, inspeccione los espacios en blanco ocultos y la codificación de bytes antes de sospechar de la primitiva criptográfica. El resumen mostrado es un vector de prueba reproducible, no una afirmación de que abc sea un secreto.
Contextos seguros: por qué crypto.subtle solo está disponible en HTTPS y localhost
crypto.subtle es una API de contexto seguro. Una página HTTPS de producción y una página de desarrollo de localhost generalmente lo exponen; una página HTTP remota insegura normal puede no hacerlo. La herramienta también necesita suficiente memoria para almacenar la entrada y la salida. Cuando Web Crypto no está disponible, cambiar silenciosamente a un hash de JavaScript no revisado haría que un resultado sensible a la seguridad dependiera de una implementación diferente. Fracase claramente y elija en su lugar un entorno seguro.
Lo que esto no cubre: hash con clave (HMAC) y hash incremental de entradas muy grandes, que la API de resumen de una sola vez no proporciona
La API de resumen de una sola vez no es un hash incremental para archivos de gran tamaño. SHA-256 no es un esquema de almacenamiento de contraseñas: los hashes rápidos sin sal hacen que adivinar sea barato, por lo que el almacenamiento de contraseñas necesita un KDF deliberadamente costoso, salado y diseñado específicamente. Es posible que SHA-1 se muestre para la interoperabilidad heredada, pero su resistencia a las colisiones está rota y no es una buena opción para nuevos sistemas de integridad o firma. HMAC es autenticación con clave, no es la misma operación que digerir bytes no autenticados.
Conclusión: el navegador ya tiene una función hash: la calculadora de hash ToolAcre SHA utiliza exactamente esta API, por lo que su salida es propia del navegador.
El navegador ya proporciona SHA-256: codifica el texto como bytes, espera el resumen y luego formatea el resultado para compararlo. La calculadora de hash ToolAcre SHA sigue esa ruta para el texto pegado y etiqueta SHA-1 como solo heredado. Primero compare abc con el resultado conocido, luego haga un hash del material no sensible real cuyos bytes y codificación comprenda.