scrypt Hash Generator

Free online scrypt Hash Generator tool. 100% local processing — your data never leaves your device.

General
Password Hashing / KDF
Specialized
Deprecated
bytes
Output

Result will be displayed here...

Input Calculate Hash

Usage Guide

About scrypt

scrypt (RFC 7914) is a memory-hard password-based key derivation function designed to be expensive in both CPU time and memory. It was created to resist GPU, FPGA, and ASIC brute-force attacks that threaten PBKDF2 and bcrypt. scrypt is used in Litecoin proof-of-work, password managers, and secure key derivation. Three cost parameters let you tune security vs. performance.

scrypt is a KDF, not a hash. It derives a key from a password and salt — the output is NOT directly comparable across different parameters. Always store the full parameter string (n:r:p:salt:key) to enable future verification.

Usage Steps

scrypt is a one-way key derivation function — it cannot be reversed:

1. Enter PasswordType the password to derive a key from in the input box
2. Configure ParametersSet N (CPU/memory cost), r (block size), p (parallelism). Defaults (N=16384, r=8, p=1) are suitable for interactive logins
3. Derive KeyClick 'Encrypt' — the output is n:r:p:salt_base64:key_hex
4. Verify PasswordTo verify, paste the full output string after the password separated by | (e.g. mypassword|16384:8:1:salt:keyhex), then click 'Decrypt'
Privacy: All derivations run entirely in your browser via WebAssembly. Your password is never transmitted.

Output Format

scrypt outputs the full parameter string needed for future verification:

Formatn:r:p:salt_base64:key_hex (e.g. 16384:8:1:abc123...:d4e5f6...)
NCPU and memory cost factor — must be a power of 2 (e.g. 16384 = 2¹⁴)
rBlock size parameter — affects memory bandwidth cost
pParallelization factor — increases CPU cost independently of memory
Salt16-byte random salt auto-generated per derivation (Base64-encoded)
Key32-byte derived key (hex-encoded)

Choosing scrypt Parameters

Select parameters based on your security requirements and acceptable latency:

Interactive (login)N=16384, r=8, p=1 — ~100ms on modern hardware, suitable for web authentication
Sensitive (file encryption)N=1048576, r=8, p=1 — ~5s on modern hardware, suitable for disk encryption keys
N must be power of 2Valid values: 1024, 2048, 4096, 8192, 16384, 32768, 65536, 131072, 262144, 524288, 1048576
Memory usageApproximately 128 × N × r bytes (e.g. N=16384, r=8 → ~16 MB)
For new applications, consider Argon2id (the NIST and OWASP recommended winner of the Password Hashing Competition). scrypt is excellent and widely deployed, but Argon2id has a simpler parameter model.

FAQ

Q: What makes scrypt resistant to hardware attacks?

A: scrypt is memory-hard: its internal ROMix algorithm requires accessing a large memory block (128 × N × r bytes) in a pseudo-random order. This sequential memory access pattern cannot be parallelized the way SHA-256 can — filling N=16384, r=8 requires ~16 MB that must be randomly accessed, making it orders of magnitude more expensive on GPU/ASIC hardware compared to purely computational hashes like SHA-256 or PBKDF2.

Q: How does scrypt compare to bcrypt and Argon2?

A: All three are password hashing algorithms but differ in design: bcrypt (1999) is time-hard only (fixed 4 KB memory), making it increasingly vulnerable to GPU attacks. scrypt (2009) is memory-hard, resistant to GPU/ASIC, but has a complex parameter interaction (large N also increases CPU cost via p). Argon2id (2015, PHC winner) is memory-hard, GPU-resistant, and has independent time/memory/parallelism parameters. OWASP and NIST recommend Argon2id for new systems; scrypt is a strong second choice.

Q: Why does N have to be a power of 2?

A: scrypt's ROMix algorithm internally uses N as the size of a lookup table and relies on bitwise masking (index & (N-1)) for efficient random access. This mask trick only works correctly when N is a power of 2. Common values: 16384 (2¹⁴) for interactive use, 1048576 (2²⁰) for file encryption.

Q: Can I use scrypt output directly as a cryptographic key?

A: Yes — scrypt is specifically designed to produce keying material. The 32-byte (256-bit) output is suitable as an AES-256 key or ChaCha20-Poly1305 key. However, never use the same scrypt derivation for multiple purposes (e.g. authentication AND encryption) — derive separate keys with different salts or use a KDF like HKDF to expand one root key.

Q: What is the verification input format?

A: To verify a password against a stored scrypt hash, place the password and the full scrypt output string separated by a pipe character: password|16384:8:1:salt_base64:key_hex. The tool re-derives the key using the stored parameters and compares it to the stored key. If they match, it returns '✓ Password verified'.

Q: Is scrypt appropriate for password storage in a database?

A: Yes, with appropriate parameters. Store the full string (n:r:p:salt:key) per user — it contains everything needed for future verification. Use at minimum N=16384, r=8, p=1 for interactive logins; increase N for more security-critical applications. See the OWASP Password Storage Cheat Sheet for current recommendations.

Use Cases

Recommended: Password Storage

scrypt is an excellent choice for hashing passwords before storing them in a database. Its memory-hardness makes offline brute-force attacks orders of magnitude more expensive than PBKDF2 or bcrypt. Use N≥16384 for web applications, higher for more sensitive systems.

Recommended Configuration:
  • ✅ scrypt with N=16384, r=8, p=1 for interactive web logins
  • ✅ Store the full n:r:p:salt:key string — never just the key
  • ✅ Use a unique random salt per user (auto-generated by this tool)
  • ❌ Do not use scrypt with N<1024 — provides insufficient work factor
  • 💡 Consider Argon2id for new projects — it is the current OWASP recommendation
Recommended: Disk Encryption Key Derivation

scrypt is well-suited for deriving encryption keys from passphrases for disk or file encryption. Higher parameters (N=1048576) are appropriate because the derivation happens once at mount time and the extra seconds of delay are acceptable. The derived key can be used directly with AES-256-GCM.

Recommended Configuration:
  • ✅ scrypt with N=1048576 (2²⁰) for disk/file encryption key derivation
  • ✅ Use the 32-byte output directly as an AES-256-GCM key
  • ✅ Store the scrypt parameters and salt alongside the encrypted data
  • ❌ Do not use the same derived key for both authentication and encryption
Recommended: Cryptocurrency Applications

scrypt was notably adopted as the Proof-of-Work algorithm for Litecoin (and other cryptocurrencies). In wallet applications, scrypt is used to derive private keys from mnemonics or passphrases. Its memory-hardness was chosen specifically to resist ASIC mining advantages.

Recommended Configuration:
  • ✅ scrypt for wallet key derivation from user passphrases
  • ✅ scrypt for passphrase-protected key storage
  • ❌ For PoW mining applications, use implementation-specific parameters
Not Recommended: Unauthenticated Contexts

scrypt derives a key — it does not provide authentication or integrity by itself. If you need a message authentication code, use HMAC-SHA256. If you need a fast data checksum, use SHA-256. scrypt's computational cost makes it unsuitable for high-volume operations.

Recommended Configuration:
  • ❌ scrypt for general-purpose hashing (use SHA-256 instead)
  • ❌ scrypt for HMAC or message authentication
  • ❌ scrypt for high-frequency operations (API request signing, per-request tokens)
  • ✅ scrypt only where its password-protection properties are explicitly needed

Best Practice Summary

  • scrypt is a memory-hard KDF — suitable for password hashing and key derivation from passphrases.
  • Always store the full parameter string (n:r:p:salt:key) — never the key alone.
  • N must be a power of 2; default N=16384, r=8, p=1 is appropriate for interactive logins.
  • For new applications, OWASP recommends Argon2id as the first choice; scrypt is the strong second choice.
  • scrypt is NOT appropriate for general hashing, MACs, or high-frequency operations — use SHA-256 or HMAC for those.

Discussion & Feedback

0 comments
Me