WOLFRAM

FileHash[file]

gives an integer hash code for the contents of the specified file.

FileHash[file,"type"]

gives an integer hash of the specified type.

FileHash[file,"type","format"]

gives a hash code in the specified format.

FileHash[{file,range},]

gives the hash code for the specified range of bytes.

FileHash[{filespec1,filespec2,},]

gives the hash codes for a list of files.

Details

  • Values generated by FileHash are based on the raw bytes in a file.
  • Files may be specified as "file", File["file"], CloudObject["url"] or InputStream[]. Input streams must have been opened with BinaryFormatTrue.
  • FileHash supports the following range specifications:
  • nfirst n bytes
    -nlast n bytes
    {n}byte n only
    {m,n}bytes m through n
    0no bytes
    Allall bytes
  • FileHash[{stream,range},] effectively extracts data at the specified range of byte positions in an input stream, ignoring any previous stream position.
  • Each filespec can be either file or {file,range}.
  • Possible hash code types include:
  • "Adler32"Adler 32-bit cyclic redundancy check
    "CRC32"32-bit cyclic redundancy check
    "MD2"128-bit MD2 code
    "MD4"128-bit MD4 code
    "MD5"128-bit MD5 code (default)
    "RIPEMD160"160-bit RIPEMD code
    "RIPEMD160SHA256"RIPEMD-160 following SHA-256 (as used in Bitcoin)
    "SHA"160-bit SHA-1 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
    "SHA3-224"224-bit SHA3 code
    "SHA3-256"256-bit SHA3 code
    "SHA3-384"384-bit SHA3 code
    "SHA3-512"512-bit SHA3 code
    "Keccak224"224-bit Keccak code
    "Keccak256"256-bit Keccak code
    "Keccak384"384-bit Keccak code
    "Keccak512"512-bit Keccak code
  • FileHash by default uses 128-bit MD5 code.
  • Possible formats include:
  • "Integer"integer (default)
    "DecimalString"decimal string
    "HexString"hexadecimal string
    "Base36String"base-36 alphanumeric string
    "Base64Encoding"Base64 encoding
    "ByteArray"hash code as an explicit byte array
  • For compatibility with earlier versions of the Wolfram Language, the syntaxes FileHash[file,"type",range] and FileHash[file,"type",range,"format"] are also supported.

Examples

open allclose all

Basic Examples  (5)Summary of the most common use cases

The fingerprint of a file:

Out[1]=1

The "SHA512" hash code of a file:

Out[1]=1

The "SHA512" hash code of the first 100 bytes of a file:

Out[1]=1

The "MD5" hash code in hexadecimal form:

Out[1]=1

Hash of a CloudObject:

Out[2]=2
Out[3]=3

Scope  (11)Survey of the scope of standard use cases

File and Range Specifications  (6)

Compute a hash for the first 100 bytes of a file:

Out[2]=2

Equivalently:

Out[3]=3

Compute a hash for the last 100 bytes:

Out[4]=4

Equivalently:

Out[5]=5

Compute a hash for bytes 100 through 200:

Out[6]=6

Compute a hash for all bytes except the first 100 or the last 100:

Out[7]=7

Compute the hash for byte 100 only:

Compute a hash for no bytes:

Out[8]=8

Compute the hashes of several files:

Out[1]=1

Find the hash for a complete file as well as several subsets of it:

Out[2]=2

Create a CloudObject:

Find the hash of the data contained in the CloudObject:

Out[2]=2

By default, MD5 hash of the full range is calculated:

Out[3]=3

For hashing, the data from the CloudObject is represented as a string including the newline:

Out[4]=4

The same hash using the sequence of bytes:

Out[5]=5

Open a binary stream:

Out[1]=1

Compute its hash:

Out[2]=2

The same result is given independently of the current stream position:

Out[3]=3
Out[4]=4

Close the stream:

Out[5]=5

Create an empty file and cloud object:

Put the same content in the file and cloud object:

Also open a stream pointing at the file:

Out[3]=3

The hashes of all three objects are the same:

Out[4]=4

Close the stream:

Hash Types and Formats  (5)

Compare different hash codes:

Out[1]=1

512-bit SHA code given as an integer:

Out[1]=1
Out[2]=2

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

Out[1]=1
Out[2]=2

Compare the different string representations of a hash:

Out[1]=1

The double SHA code of the first 50 bytes of a file, given as a ByteArray:

Out[1]=1

The byte array contains the 256 bits of the result:

Out[2]=2

View the individual bytes in the array:

Out[3]=3

Properties & Relations  (10)Properties of the function, and connections to other functions

The default format is "MD5":

Out[1]=1

The default range specification is All:

Out[1]=1

This is equivalent to {-1,1}:

Out[2]=2

Hashing zero bytes is equivalent to finding the hash of an empty file:

Out[2]=2

"Integer" is the default format:

Out[1]=1

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

Out[1]=1

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

Out[1]=1

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

Out[1]=1

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

Out[1]=1
Out[2]=2

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

Out[1]=1

FileHash[file,code] is effectively equivalent to Hash[ByteArray@Import[file,"Byte"]]:

Out[1]=1
Wolfram Research (2007), FileHash, Wolfram Language function, https://reference.wolfram.com/language/ref/FileHash.html (updated 2020).
Wolfram Research (2007), FileHash, Wolfram Language function, https://reference.wolfram.com/language/ref/FileHash.html (updated 2020).

Text

Wolfram Research (2007), FileHash, Wolfram Language function, https://reference.wolfram.com/language/ref/FileHash.html (updated 2020).

Wolfram Research (2007), FileHash, Wolfram Language function, https://reference.wolfram.com/language/ref/FileHash.html (updated 2020).

CMS

Wolfram Language. 2007. "FileHash." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/FileHash.html.

Wolfram Language. 2007. "FileHash." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2020. https://reference.wolfram.com/language/ref/FileHash.html.

APA

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

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

BibTeX

@misc{reference.wolfram_2025_filehash, author="Wolfram Research", title="{FileHash}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/FileHash.html}", note=[Accessed: 25-March-2025 ]}

@misc{reference.wolfram_2025_filehash, author="Wolfram Research", title="{FileHash}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/FileHash.html}", note=[Accessed: 25-March-2025 ]}

BibLaTeX

@online{reference.wolfram_2025_filehash, organization={Wolfram Research}, title={FileHash}, year={2020}, url={https://reference.wolfram.com/language/ref/FileHash.html}, note=[Accessed: 25-March-2025 ]}

@online{reference.wolfram_2025_filehash, organization={Wolfram Research}, title={FileHash}, year={2020}, url={https://reference.wolfram.com/language/ref/FileHash.html}, note=[Accessed: 25-March-2025 ]}