piapia123
es

Generador y verificador de hashes scrypt

Cifrado

Todo se ejecuta en tu navegador: no se sube nada

Entrada
Arrastra un archivo aquí para cargarlo
Resultado

Genera o verifica hashes de contraseña con scrypt. Su diferencia clave frente a bcrypt es que es duro en memoria: bcrypt solo mantiene ocupada la CPU, mientras que scrypt además exige un bloque grande de memoria (32 MB con los parámetros predeterminados), de modo que a un atacante que descifra en paralelo con tarjetas gráficas se le agota la VRAM enseguida — y precisamente por eso se diseñó así. La salida usa el formato estándar PHC `$scrypt$ln=15,r=8,p=1$<sal>$<hash>`, con los parámetros escritos dentro de la propia cadena, así que al verificar no hace falta saber de antemano qué parámetros se usaron (un paso más allá de bcrypt: su factor de coste también está en la cadena, pero con forma fija, mientras que scrypt tiene tres valores ajustables). El panel muestra en tiempo real cuánta memoria piden los ajustes actuales; si superan el techo de esta herramienta, se baja N hasta que encaje y el resultado dice con claridad qué N se usó de verdad — cambiar los parámetros en silencio te dejaría con un hash que no corresponde a lo que pediste, la peor clase de «éxito». La salida también puede ser la clave derivada en hex o Base64 (son bytes en crudo, sin sal ni parámetros: no es lo mismo que la cadena PHC).

Funciones

  • Dos direcciones: generar un hash o verificar una contraseña contra uno
  • Parámetros ajustables: exponente de N (ln), tamaño de bloque r y paralelismo p
  • Salida como cadena PHC, como clave derivada en hex o Base64, o las tres a la vez
  • Al verificar, lee los parámetros del propio hash, sin necesidad de conocerlos de antemano
  • Muestra en vivo el consumo de memoria de los ajustes actuales; si se pasa del presupuesto, indica qué N se usó realmente en lugar de cambiarlo en silencio
  • Comparación en tiempo constante: nunca devuelve antes de tiempo porque coincidan los primeros bytes

Cómo se usa

  1. Elige el modo: generar o verificar
  2. Al generar, ajusta los parámetros (por defecto ln=15 / r=8 / p=1, 32 MB) y elige el formato de salida; al verificar, pega el hash en su campo
  3. Pega la contraseña en la caja de entrada
  4. Pulsa Ctrl/⌘ + Enter o haz clic en Ejecutar, y copia el resultado

Preguntas frecuentes

¿Scrypt o bcrypt? ¿Cuál elijo?
Los dos son aceptables hoy; se diferencian en qué consumen. Bcrypt gasta solo CPU, así que una GPU puede ejecutar miles de instancias a la vez. Scrypt gasta además memoria: cada instancia ocupa 128 × r × N bytes, lo que agota la VRAM enseguida — esa es toda su ventaja. En términos criptográficos, el orden recomendado es Argon2id > scrypt > bcrypt, y los tres son mucho mejores que cualquier hash rápido (guardar contraseñas con SHA-256 a secas está simplemente mal). Esta herramienta ofrece ambos porque bcrypt tiene mucha más base instalada en sistemas existentes.
¿Cómo ajusto ln, r y p?
ln es el mando principal: N = 2^ln, y tanto la memoria como el tiempo crecen de forma lineal con él, así que cada paso duplica el coste. El valor predeterminado, 15 (N=32768, 32 MB), es la elección habitual y también el valor por defecto de passlib y bibliotecas similares. r reparte el coste entre memoria y cálculo (cuanto mayor, más tira a memoria); déjalo en 8. p divide la entrada en flujos paralelos y multiplica la memoria total por p — pero aquí, en un navegador, todo corre en un solo hilo, así que un p mayor que 1 solo encarece el proceso sin ganar velocidad. Déjalo en 1.
¿Por qué al verificar no tengo que dar los parámetros?
Porque están escritos en la propia cadena del hash: el tramo `$scrypt$ln=15,r=8,p=1$…`. Es justo la idea del formato PHC: quien verifica solo necesita el hash para recalcular, sin una tabla de parámetros aparte que tarde o temprano se desincronice. Esta herramienta lee ln / r / p del hash e ignora los tres campos de la página, así que cambiarlos no altera el resultado.
¿Sirven estos hashes en otros programas?
Sí. El formato PHC es la forma común en passlib (Python), node-scrypt y otros, con la sal y el hash en Base64 estándar sin relleno. Guarda la cadena entera; al verificar, devuélvela tal cual a esta herramienta o a una de esas bibliotecas. A la inversa, si otro sistema te da un hash scrypt que no se parece a `$scrypt$…` — un objeto JSON, o la forma antigua `$7$` —, esta herramienta no lo reconocerá y lo dirá claramente.
¿Qué salida elijo: PHC, hex o Base64?
Para guardar contraseñas, PHC: es la única forma que lleva la sal y los parámetros, así que una sola cadena basta para verificar. Hex y Base64 son la clave derivada en crudo (32 bytes por defecto), sin sal ni ln/r/p, así que por sí solas no verifican nada; su utilidad es alimentar esa clave a otra cosa, como una clave HMAC o la entrada de otro KDF. Por eso mismo la misma contraseña da una cadena PHC distinta cada vez (la sal es aleatoria), mientras que con una misma sal y unos mismos parámetros el hex y el Base64 son dos escrituras de la misma clave y se decodifican byte a byte iguales.

Herramientas relacionadas