sha1(md5($pass)) Hash

Technical details, regex signatures, and cracking commands for the sha1(md5($pass)) algorithm.

Regex Identification Signature:
^[a-f0-9]{40}(:.+)?$
Hashcat Command (Mode: 4700):
Not supported natively by John the Ripper
← Back to Hash Identifier

What is sha1(md5($pass))?

The cryptographic hash format `sha1(md5($pass))` is a composite hashing scheme that emerged in the late 1990s and early 2000s as a stopgap measure to mitigate the growing computational power available for brute-force attacks against weaker hashes like MD5 alone. Structurally, it consists of two sequential cryptographic operations: first, the input password is hashed using MD5 (a 128-bit hash function with a 64-byte block size), producing a 128-bit digest; this intermediate hash is then fed into SHA-1 (a 160-bit hash function with a 512-byte block size), yielding a final 160-bit output. While this layered approach was intended to increase perceived security by combining two distinct algorithms, it was never formally standardized and relied on the assumption that sequential hashing would create a more robust defense against rainbow table attacks and collision exploits. Its primary use-case was in legacy systems—particularly older web applications, authentication databases, and early password storage schemes—where developers sought to extend the lifespan of MD5 hashes without adopting stronger alternatives like bcrypt or Argon2. However, the scheme’s ad-hoc nature and lack of cryptographic rigor rendered it fundamentally flawed from a security standpoint.

The vulnerability of `sha1(md5($pass))` stems from its inherent design flaws and exploitability under modern computational resources. The primary weakness is its **lack of salting**, leaving it susceptible to precomputed rainbow table attacks, where attackers invert the hash function en masse to derive plaintext passwords. Additionally, the sequential composition of MD5 and SHA-1 introduces **collision vulnerabilities**: MD5’s poor avalanche effect allows for predictable intermediate states, and SHA-1’s known weaknesses (e.g., the 2005 collision attack by Wang et al.) undermine the integrity of the final output. Furthermore, the absence of a key-stretching mechanism makes the hash computationally trivial to brute-force using optimized hardware—modern GPUs and FPGA clusters can evaluate billions of hashes per second, rendering the 160-bit SHA-1 output effectively insecure for password storage. Finally, the scheme’s reliance on legacy algorithms (both MD5 and SHA-1 are cryptographically broken) ensures that any residual security is purely illusory, as neither function provides sufficient resistance to length-extension attacks, chosen-prefix collisions, or differential cryptanalysis. The combination of these factors renders `sha1(md5($pass))` catastrophically insecure for any purpose requiring confidentiality or integrity.

Identifying sha1(md5($pass)) Hashes

Identifying a hash blindly is often difficult because multiple algorithms can output strings of the exact same length. For example, a standard 32-character hexadecimal string could be MD5, NTLM, MD4, or LM. To definitively identify sha1(md5($pass)), security researchers analyze the hash against a strict regular expression (regex) signature (shown above) to find structural matches.

How to Crack sha1(md5($pass))

If you need to recover the plaintext password for a sha1(md5($pass)) hash during a penetration test or forensics investigation, you must supply the correct module ID to your cracking software. Use the exact commands provided at the top of this page to target the hash successfully.