Skip to main content
Examples

One per line. Shadow, pwdump, user:hash and checksum lines work as they are.

Options

Where the hash is from changes only the order of formats that share a length, such as MD5 and NTLM.

Where is it from?

Paste a hash to identify its format, or several hashes with one per line.

What Is a Hash Identifier?

The hash identifier names the format of a hash or password hash from its prefix, length and characters. It separates exact matches, where every part of the value has the length and alphabet the format requires, from formats that only share a length, such as MD5 and NTLM. It knows 90 formats. For each candidate it shows the hashcat mode, the John the Ripper format, and the parameters stored in the hash, such as the bcrypt cost or the Argon2 memory size. It also reads /etc/shadow, pwdump and user:hash lines.

How to Use the Hash Identifier

  1. Paste a hash, or several hashes with one per line. Lines from /etc/shadow, pwdump output and user:hash lists work as they are.
  2. If several formats share the same length, pick where the hash came from to list the likely ones first.
  3. Read the exact or possible formats, the parameters stored in the hash, and the notes on each format.
  4. Copy the hashcat mode or the John the Ripper format name of the top candidate.

How It Works

Many password hash formats start with a prefix that names the method, followed by parameters, a salt and the hash, separated by $ characters. crypt(5) documents these prefixes, such as $y$ for yescrypt, $2b$ for bcrypt and $6$ for sha512crypt. Most methods use a salt so that the same passphrase can produce many possible hashes. Argon2 uses the PHC string format, which stores salt and hash in Base64 without padding.

The tool checks each value against its table of formats. A format with a prefix or fixed separators is an exact match only when every part has the documented length and alphabet, so a bcrypt hash needs a cost from 04 to 31 and 53 characters of salt and hash. A plain hex digest has no prefix, so every format with that length is possible: 32 hex digits fit MD5, which produces a 128-bit digest, and also NTLM, MD4 and LM. Within one length, the list follows the source you pick and then the site's listing order. The order is not a probability.

The parameters come from the hash itself. The bcrypt cost is the base-2 logarithm of the number of rounds, so an encoded 8 means 256 rounds (OpenBSD crypt(3)). sha256crypt and sha512crypt use 5000 rounds when the hash has no rounds= field, a default crypt(5) calls too low for modern hardware. Kerberos encryption type 23 is RC4-HMAC (RFC 4757), and types 17 and 18 are AES128 and AES256 (RFC 3962).

Mode numbers and names come from the hashcat 8.0.0 example hash list. hashcat 8.0.0 moved some modes into a number range reserved for recipes, and the old number still works, so the tool shows both. John the Ripper format names are the format labels in the John the Ripper jumbo source code.

Windows stores the NT hash, an unsalted MD4 hash of the password. The older LM hash pads the password with null bytes to 14 characters, converts it to uppercase and splits it into two 7-byte halves, so an empty half always gives the same value. Microsoft has disabled LM storage by default since Windows Vista and Windows Server 2008.

Each line of /etc/shadow has 9 fields separated by colons, and the hash is the second field. A password field that starts with ! marks a locked password (shadow(5)).

Formats with a fixed structure (58)
FormatTypehashcat modeJohn the Ripper
yescryptMemory-hard password hash36100crypt
gost-yescryptMemory-hard password hash36200crypt
scrypt ($7$)Memory-hard password hash36300scrypt
bcryptAdaptive password hash3200bcrypt
sha512cryptAdaptive password hash1800sha512crypt
sha256cryptAdaptive password hash7400sha256crypt
sm3cryptAdaptive password hash35100sm3crypt
sha1crypt (NetBSD)Legacy password hash40038 (was 15100)sha1crypt
SunMD5Legacy password hash3300SunMD5
md5cryptLegacy password hash500md5crypt
Apache APR1-MD5Legacy password hash1600md5crypt-long
BSDi extended DES cryptLegacy password hash12400bsdicrypt
Argon2Memory-hard password hash34000Argon2
phpass (WordPress, phpBB3)Legacy password hash400phpass
WordPress bcrypt (HMAC-SHA384 pre-hash)Adaptive password hash35500None
Drupal 7Adaptive password hash40020 (was 7900)Drupal7
Django PBKDF2-SHA256Adaptive password hash40022 (was 10000)Django
Django salted SHA-1 (legacy)Legacy password hash124None
Werkzeug salted HMAC-SHA256Fast digest30120None
passlib bcrypt_sha256Adaptive password hash30601None
LDAP {SHA} (SHA-1, Base64)Fast digest101Raw-SHA1
LDAP {SSHA} (salted SHA-1, Base64)Legacy password hash111Salted-SHA1
LDAP {SSHA256}Legacy password hash1411None
LDAP {SSHA512}Legacy password hash1711None
Atlassian PBKDF2-HMAC-SHA1Adaptive password hash40033 (was 12001)PBKDF2-HMAC-SHA1
MySQL 4.1 and laterLegacy password hash300mysql-sha1
MSSQL 2000Legacy password hash131mssql
MSSQL 2005Legacy password hash132mssql05
MSSQL 2012 and laterLegacy password hash1731mssql12
PostgreSQL MD5 (pg_authid)Legacy password hash12None
PostgreSQL SCRAM-SHA-256Adaptive password hash40055 (was 28600)SCRAM-PBKDF2-SHA256
Windows pwdump line (LM and NT hashes)Windows credential hash1000, 3000NT
NTLM with $NT$ tagWindows credential hash1000NT
Domain Cached Credentials 2 (DCC2)Windows credential hash2100mscash2
NetNTLMv1Captured authentication exchange5500netntlm
NetNTLMv2Captured authentication exchange5600netntlmv2
Kerberos 5 TGS-REP, etype 23 (RC4-HMAC)Captured authentication exchange13100krb5tgs
Kerberos 5 TGS-REP, etype 17 (AES128)Captured authentication exchange19600krb5tgs-sha1
Kerberos 5 TGS-REP, etype 18 (AES256)Captured authentication exchange19700krb5tgs-sha1
Kerberos 5 AS-REP, etype 23 (RC4-HMAC)Captured authentication exchange18200krb5asrep
Kerberos 5 AS-REP, etype 17 (AES128)Captured authentication exchange32100krb5asrep
Kerberos 5 AS-REP, etype 18 (AES256)Captured authentication exchange32200krb5asrep
Kerberos 5 AS-REQ pre-auth, etype 23Captured authentication exchange7500krb5pa-md5
Kerberos 5 AS-REQ pre-auth, etype 17Captured authentication exchange19800krb5pa-sha1
Kerberos 5 AS-REQ pre-auth, etype 18Captured authentication exchange19900krb5pa-sha1
Cisco IOS type 8 (PBKDF2-SHA256)Adaptive password hash40021 (was 9200)PBKDF2-HMAC-SHA256
Cisco IOS type 9 (scrypt)Memory-hard password hash9300scrypt
BLAKE2b-512 ($BLAKE2$ tag)Fast digest600Raw-Blake2
JSON Web Token (HMAC signed)Signed token16500HMAC-SHA256
Microsoft Office 2007 and laterEncrypted file or wallet9400, 9500, 9600Office
PDF documentEncrypted file or wallet10400, 10500, 10600, 10700PDF
WinZip AESEncrypted file or wallet13600ZIP
PKZIP (ZipCrypto)Encrypted file or wallet17200, 17210, 17220, 17225, 17230PKZIP
7-ZipEncrypted file or wallet116007z
RAR5Encrypted file or wallet13000RAR5
KeePass databaseEncrypted file or wallet13400, 34300, 34301KeePass
Bitcoin Core wallet.datEncrypted file or wallet11300Bitcoin
WPA-PBKDF2 PMKID or EAPOL (hashcat 22000)Captured authentication exchange22000, 22001None
Formats identified by length only (32)
FormatTypehashcat modeJohn the Ripper
Traditional DES cryptLegacy password hash1500descrypt
MySQL 3.2.3 (OLD_PASSWORD)Legacy password hash200mysql
Domain Cached Credentials (DCC)Windows credential hash1100mscash
CRC-32Checksum11500CRC32
LM (one 16-character half)Windows credential hash3000LM
Half MD5Fast digest5100None
MD5Fast digest0Raw-MD5
NTLM (NT hash)Windows credential hash1000NT
MD4Fast digest900Raw-MD4
LM (both halves)Windows credential hash3000LM
SHA-1Fast digest100Raw-SHA1
RIPEMD-160Fast digest6000dynamic_130
MySQL 4.1 and later (without the asterisk)Legacy password hash300mysql-sha1
macOS 10.4 to 10.6 (salted SHA-1)Legacy password hash122xsha
SHA-224Fast digest1300Raw-SHA224
SHA3-224Fast digest17300dynamic_370
Keccak-224Fast digest17700dynamic_430
SHA-256Fast digest1400Raw-SHA256
SHA3-256Fast digest17400dynamic_380
Keccak-256Fast digest17800Raw-Keccak-256
SM3Fast digest31100dynamic_450
GOST R 34.11-94Fast digest6900gost
GOST R 34.11-2012 (Streebog) 256-bitFast digest11700None
RIPEMD-320Fast digest33600dynamic_150
SHA-384Fast digest10800Raw-SHA384
SHA3-384Fast digest17500dynamic_390
Keccak-384Fast digest17900dynamic_440
SHA-512Fast digest1700Raw-SHA512
SHA3-512Fast digest17600Raw-SHA3
Keccak-512Fast digest18000Raw-Keccak
WhirlpoolFast digest6100dynamic_100
GOST R 34.11-2012 (Streebog) 512-bitFast digest11800None

Standards

Scope

What It Checks

  • +Identifies 90 hash formats by prefix, length and character set: 58 with a fixed structure and 32 that only have a length and alphabet.
  • +Validates the structure of each format, such as the bcrypt cost range of 04 to 31 and the salt and hash lengths of crypt formats.
  • +Shows the hashcat mode and John the Ripper format for every candidate, with the earlier mode number where hashcat 8.0.0 renumbered it.
  • +Reads the parameters stored in a hash: bcrypt cost, Argon2 memory, iterations and parallelism, sha512crypt rounds, PBKDF2 iterations, and the Kerberos encryption type. It flags a bcrypt cost or Django PBKDF2 iteration count below the OWASP minimum.
  • +Reads /etc/shadow, pwdump, user:hash and hash:salt lines and checksum tool output, up to 100 lines at once.
  • +Recognizes digests of empty input and the LM value of an empty password.
  • +Explains why a value matches no format, such as an odd number of hex digits or Base64 that decodes to a digest length.

What It Does Not Check

  • -It does not recover passwords or look hashes up in any database.
  • -It cannot tell apart formats that share a length and character set, such as MD5 and NTLM. It lists them as possible formats.
  • -It does not check that a hash was computed correctly or that it belongs to a given password.
  • -It does not identify encrypted data, encodings, or application formats that are not in its table.

Defensive Use

OWASP recommends Argon2id for password storage and says fast hashing algorithms such as SHA-256 are not suitable for it. crypt(5) says md5crypt should not be used for new hashes, and Microsoft has deprecated all versions of NTLM. Identifying the format of stored hashes shows which accounts still use one of these methods and need a new password hash.

Frequently Asked Questions

What is a Hash Identifier?→

The hash identifier names the format of a hash or password hash from its prefix, length and characters. It separates exact matches, where every part of the value has the length and alphabet the format requires, from formats that only share a length, such as MD5 and NTLM. It knows 90 formats. For each candidate it shows the hashcat mode, the John the Ripper format, and the parameters stored in the hash, such as the bcrypt cost or the Argon2 memory size. It also reads /etc/shadow, pwdump and user:hash lines.

What is the Hash Identifier used for?→

Working out what kind of hash a database export, configuration file or incident artifact holds, checking whether stored password hashes use a method that should be replaced, and finding the format name a password audit tool expects.

Is my data sent anywhere?→

No. The Hash Identifier runs in your browser. What you enter stays on this page and is not sent to ImmunitySec or anyone else.

How is the Hash Identifier used defensively?→

OWASP recommends Argon2id for password storage and says fast hashing algorithms such as SHA-256 are not suitable for it. crypt(5) says md5crypt should not be used for new hashes, and Microsoft has deprecated all versions of NTLM. Identifying the format of stored hashes shows which accounts still use one of these methods and need a new password hash.

Can a hash identifier tell MD5 and NTLM apart?→

No. An MD5 digest and an NT hash are both 32 hexadecimal characters with no prefix, so the value fits both. Windows stores the NT hash as an MD4 hash of the password (Microsoft). Only the place the hash came from, such as a Windows account database or a list of file checksums, decides which one is likely.

What do the $2a$, $2b$ and $2y$ bcrypt prefixes mean?→

crypt(5) lists $2b$ as the bcrypt prefix. $2y$ is equivalent to $2b$ and exists for historical reasons only. $2a$ and $2x$ provide bug compatibility with crypt_blowfish 1.0.4 and earlier, which processed characters with the 8th bit set incorrectly.

Is it safe to paste a Windows hash here?→

The tool runs in your browser and sends nothing. Handle NT hashes like passwords anyway. MITRE ATT&CK describes pass the hash as authenticating as a user without access to the cleartext password.

Which password hash formats are recommended today?→

OWASP recommends Argon2id with at least 19 MiB of memory, 2 iterations and 1 degree of parallelism, and bcrypt with a work factor of 10 or more for legacy systems. crypt(5) recommends yescrypt for new hashes.

Why does the tool show two hashcat mode numbers?→

hashcat 8.0.0 defines some modes with a stored recipe and moved them into a number range reserved for recipes. The old number still works. The tool shows the 8.0.0 number with the earlier one, such as 40022 (was 10000) for Django PBKDF2-SHA256.

Mode numbers and names are from the hashcat 8.0.0 example hash list, format labels from the John the Ripper jumbo source, and the crypt format rules from the libxcrypt crypt(5) manual page.