HAS-160 Hash

Technical details, regex signatures, and cracking commands for the HAS-160 algorithm.

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

What is HAS-160?

The **HAS-160** hash format is a truncated variant of the **SHA-1** (Secure Hash Algorithm 1) cryptographic hash function, specifically the first 160 bits (20 bytes) of its 160-bit output. Originating as a lightweight alternative to full SHA-1, it was designed for applications requiring compact yet collision-resistant hashes, such as digital signatures (e.g., in Bitcoin’s address generation via RIPEMD-160) and lightweight authentication protocols. Structurally, HAS-160 follows SHA-1’s compression function framework—processing input data in 512-bit blocks via bitwise operations, modular arithmetic, and iterative message scheduling—but discards the final 20 bits of the SHA-1 output to produce a 160-bit hash. Its primary use-case lies in scenarios demanding efficiency over brute-force resistance, such as cryptocurrency address hashing (e.g., `1Hash160(input)` in Bitcoin’s base58check encoding) or legacy systems where computational overhead must be minimized.

Despite its widespread adoption, HAS-160 inherits SHA-1’s critical vulnerabilities, exacerbating them through truncation. The absence of a **salt** or **pepper** makes it susceptible to **rainbow table attacks**, as identical inputs yield identical outputs. Its **collision resistance** is compromised by the **SHA-1 collision vulnerability** (e.g., the 2017 FSE 2014 attack), though HAS-160’s truncation reduces preimage resistance further. Additionally, modern **GPU/ASIC optimizations** (e.g., parallelized SHA-1 implementations) enable brute-force cracking at rates exceeding 10^12 hashes per second, rendering it unsuitable for high-security contexts. The **lack of post-quantum resilience** and **predictable output structure** (due to SHA-1’s design flaws) also render HAS-160 vulnerable to **length-extension attacks** when improperly concatenated, undermining its integrity guarantees.

Identifying HAS-160 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 HAS-160, security researchers analyze the hash against a strict regular expression (regex) signature (shown above) to find structural matches.

How to Crack HAS-160

If you need to recover the plaintext password for a HAS-160 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.