WOLFRAM

Enable JavaScript to interact with content and submit forms on Wolfram websites. Learn how
Wolfram Language & System Documentation Center

Hash [expr]

gives an integer hash code for the expression expr.

Hash [expr,type]

gives an integer hash digest of the specified type for expr.

Hash [expr,type,"format"]

gives a hash code in the specified format.

Details
Details and Options Details and Options
Examples  
Basic Examples  
Scope  
Applications  
Properties & Relations  
Possible Issues  
Neat Examples  
See Also
Related Guides
History
Cite this Page

Hash

Hash [expr]

gives an integer hash code for the expression expr.

Hash [expr,type]

gives an integer hash digest of the specified type for expr.

Hash [expr,type,"format"]

gives a hash code in the specified format.

Details

  • Hash [expr,] will always give the same result for the same expression expr.
  • Possible hash types include:
  • "Adler32" Adler 32-bit cyclic redundancy check
    "BLAKE2b-512" 512-bit BLAKE2b code
    "BLAKE2s-256" 256-bit BLAKE2s code
    {"BLAKE2b",b} BLAKE2b code with arbitrary length b up to 512 bits
    {"BLAKE2s",b} BLAKE2s code with arbitrary length b up to 256 bits
    {"BLAKE2bp",b} multicore parallel version of BLAKE2b
    {"BLAKE2sp",b} multicore parallel version of BLAKE2s
    {"BLAKE2xb",b} BLAKE2xb code with arbitrary length b up to 256 GiB
    {"BLAKE2xs",b} BLAKE2xs code with arbitrary length b up to 128 GiB
    "CRC32" 32-bit cyclic redundancy check
    "Keccak224" 224-bit Keccak code
    "Keccak256" 256-bit Keccak code
    "Keccak384" 384-bit Keccak code
    "Keccak512" 512-bit Keccak code
    {"Keccak",b} Keccak code with length b of 224, 256, 384, 512 bits
    "MD2" 128-bit MD2 code
    "MD4" 128-bit MD4 code
    "MD5" 128-bit MD5 code
    "RIPEMD160" 160-bit RIPEMD code
    "RIPEMD160SHA256" RIPEMD-160 following SHA-256 (as used in Bitcoin)
    "SHA1" 160-bit SHA-1 code
    "SHA224" 224-bit SHA code
    "SHA256" 256-bit SHA code
    "SHA256SHA256" double SHA-256 code (as used in Bitcoin)
    "SHA384" 384-bit SHA code
    "SHA512" 512-bit SHA code
    {"SHA",b} SHA code with length b of 224, 256, 384, 512 bits
    "SHA3-224" 224-bit SHA3 code
    "SHA3-256" 256-bit SHA3 code
    "SHA3-384" 384-bit SHA3 code
    "SHA3-512" 512-bit SHA3 code
    {"SHA3",b} SHA3 code with length b of 224, 256, 384, 512 bits
    "Expression" expression hash code (default)
  • For a variable-length hash, length b must be a multiple of 8.
  • The "Expression" hash is computed from the internal representation of an expression and may vary between computer systems and from one version of the Wolfram Language to another.
  • For hashes that operate on sequences of bytes (such as "SHA"), Hash [expr,] first converts expr to bytes according to:
  • expr bytes based on ToString [FullForm [expr]]
    "string" bytes in the UTF-8 representation of string
    ByteArray [] literal bytes in the byte array
  • Possible formats include:
  • "Integer" integer (default)
    "DecimalString" decimal string
    "HexString" hexadecimal string
    "HexStringLittleEndian" hexadecimal string with little-endian byte order
    "Base36String" base-36 alphanumeric string
    "Base64Encoding" Base64 encoding
    "ByteArray" hash code as an explicit byte array

Examples

open all close all

Basic Examples  (4)

Hash a string:

Digital fingerprint of data:

SHA256 hash given in hexadecimal form:

Specify output length of the SHA hash:

Scope  (12)

Hash a general expression:

Equivalently:

Compare all the different hash codes:

Calculate "BLAKE2b" hashes with different lengths:

512-bit SHA code given as an integer:

512-bit SHA code given as a decimal string, including leading zeroes:

Compare the different string representations of a hash:

The double SHA code given as a ByteArray :

The byte array contains the 256 bits of the result:

View the individual bytes in the array:

RIPEMD160SHA256 hash is essentially a repeated hash:

When using ByteArray or a string, literal bytes are hashed:

For non-ASCII characters, UTF-8 representation is used for hashing:

Compute a cryptographic hash of zero bytes:

Calculate BLAKE2xs hash of desired length:

Applications  (2)

Provide a "checksum" to validate data integrity:

Change some of the data:

The checksum has changed:

A concatenated cryptographic hash function:

Hash code of "abcdef":

Properties & Relations  (12)

The hash is always the same for identical expressions:

Distinct hash codes come from distinct inputs:

The default hash code is "Expression":

The "Expression" hash fits in a machine word:

The leading bit is zero:

"Integer" is the default format:

"DecimalString" is the string version of "Integer", padded with zeros if necessary:

"HexString" is a base 16 representation, padded with zeros if necessary:

"Base36String" is a base 36 representation, padded with zeros if necessary:

"Base64Encoding" encodes bytes of the result using Base64 encoding:

"ByteArray" is a base 256 representation:

Convert from base 256 to an integer:

The result is the same:

Repeated hash can be obtained by using ByteArray as an intermediate result:

FileHash [file,code] is effectively equivalent to Hash [ReadByteArray [file],code]:

Possible Issues  (3)

Hash of a List of integers uses a serialized version of the list as an expression:

To hash literal bytes, use a ByteArray :

ASCII strings can be used to hash 7-bit byte values:

The Hash of an expression and a string containing the FullForm of the expression are different:

Hash takes into account the full symbol name, including its Context , which may result in different hash values:

Neat Examples  (2)

Hash collisions are very rare, but possible. Here are two lists of bytes:

They are not the same:

They differ in two locations:

Hash the two sequences of bytes:

Their hashes are identical:

Distribution of hash values for different types:

History

Introduced in 1988 (1.0) | Updated in 2007 (6.0) 2016 (11.0) 2018 (11.3) 2019 (12.0) 2022 (13.1)

Wolfram Research (1988), Hash, Wolfram Language function, https://reference.wolfram.com/language/ref/Hash.html (updated 2022).

Text

Wolfram Research (1988), Hash, Wolfram Language function, https://reference.wolfram.com/language/ref/Hash.html (updated 2022).

CMS

Wolfram Language. 1988. "Hash." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2022. https://reference.wolfram.com/language/ref/Hash.html.

APA

Wolfram Language. (1988). Hash. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Hash.html

BibTeX

@misc{reference.wolfram_2025_hash, author="Wolfram Research", title="{Hash}", year="2022", howpublished="\url{https://reference.wolfram.com/language/ref/Hash.html}", note=[Accessed: 05-December-2025]}

BibLaTeX

@online{reference.wolfram_2025_hash, organization={Wolfram Research}, title={Hash}, year={2022}, url={https://reference.wolfram.com/language/ref/Hash.html}, note=[Accessed: 05-December-2025]}

Top [フレーム]

AltStyle によって変換されたページ (->オリジナル) /