FileHash
✖
FileHash
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:
-
n first n bytes -n last n bytes {n} byte n only {m,n} bytes m through n 0 no bytes All all 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 allBasic Examples (5)Summary of the most common use cases

https://wolfram.com/xid/0d6fj7yiui-6pjqah

The "SHA512" hash code of a file:

https://wolfram.com/xid/0d6fj7yiui-wp9ooh

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

https://wolfram.com/xid/0d6fj7yiui-dqpzif

The "MD5" hash code in hexadecimal form:

https://wolfram.com/xid/0d6fj7yiui-4n4du5

Hash of a CloudObject:

https://wolfram.com/xid/0d6fj7yiui-g8xx7

https://wolfram.com/xid/0d6fj7yiui-heioc


https://wolfram.com/xid/0d6fj7yiui-h403je

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:

https://wolfram.com/xid/0d6fj7yiui-2lqpay

https://wolfram.com/xid/0d6fj7yiui-p99r70


https://wolfram.com/xid/0d6fj7yiui-3zped9

Compute a hash for the last 100 bytes:

https://wolfram.com/xid/0d6fj7yiui-q7ofvt


https://wolfram.com/xid/0d6fj7yiui-i91u6p

Compute a hash for bytes 100 through 200:

https://wolfram.com/xid/0d6fj7yiui-u7rbqe

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

https://wolfram.com/xid/0d6fj7yiui-6zwoqz

Compute the hash for byte 100 only:

https://wolfram.com/xid/0d6fj7yiui-tk55cg

https://wolfram.com/xid/0d6fj7yiui-5ekrbc

Compute the hashes of several files:

https://wolfram.com/xid/0d6fj7yiui-zsrixc

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

https://wolfram.com/xid/0d6fj7yiui-qe929w

https://wolfram.com/xid/0d6fj7yiui-vxccr

Create a CloudObject:

https://wolfram.com/xid/0d6fj7yiui-c1fp2u
Find the hash of the data contained in the CloudObject:

https://wolfram.com/xid/0d6fj7yiui-c01ifz

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

https://wolfram.com/xid/0d6fj7yiui-hueh1q

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

https://wolfram.com/xid/0d6fj7yiui-g7igx0

The same hash using the sequence of bytes:

https://wolfram.com/xid/0d6fj7yiui-dbbke8


https://wolfram.com/xid/0d6fj7yiui-dqmkuz


https://wolfram.com/xid/0d6fj7yiui-hzsf3u

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

https://wolfram.com/xid/0d6fj7yiui-xv1b69


https://wolfram.com/xid/0d6fj7yiui-kzv2po


https://wolfram.com/xid/0d6fj7yiui-vjy7b1

Create an empty file and cloud object:

https://wolfram.com/xid/0d6fj7yiui-fo0a80
Put the same content in the file and cloud object:

https://wolfram.com/xid/0d6fj7yiui-v0ifa4
Also open a stream pointing at the file:

https://wolfram.com/xid/0d6fj7yiui-4gm834

The hashes of all three objects are the same:

https://wolfram.com/xid/0d6fj7yiui-6o9ak0


https://wolfram.com/xid/0d6fj7yiui-gmaagy
Hash Types and Formats (5)

https://wolfram.com/xid/0d6fj7yiui-ftwuo8

512-bit SHA code given as an integer:

https://wolfram.com/xid/0d6fj7yiui-ivtv9a


https://wolfram.com/xid/0d6fj7yiui-wmdxy0

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

https://wolfram.com/xid/0d6fj7yiui-8krt8n


https://wolfram.com/xid/0d6fj7yiui-9d5c65

Compare the different string representations of a hash:

https://wolfram.com/xid/0d6fj7yiui-e7iqlh

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

https://wolfram.com/xid/0d6fj7yiui-mevezj

The byte array contains the 256 bits of the result:

https://wolfram.com/xid/0d6fj7yiui-p04gji

View the individual bytes in the array:

https://wolfram.com/xid/0d6fj7yiui-tn2iqh

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

https://wolfram.com/xid/0d6fj7yiui-eeiu57

The default range specification is All:

https://wolfram.com/xid/0d6fj7yiui-d5n3v2


https://wolfram.com/xid/0d6fj7yiui-d14bky

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

https://wolfram.com/xid/0d6fj7yiui-n5b2j0

https://wolfram.com/xid/0d6fj7yiui-fwlun3


https://wolfram.com/xid/0d6fj7yiui-vg71se
"Integer" is the default format:

https://wolfram.com/xid/0d6fj7yiui-9sot34

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

https://wolfram.com/xid/0d6fj7yiui-wi2tzj

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

https://wolfram.com/xid/0d6fj7yiui-qa6km8

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

https://wolfram.com/xid/0d6fj7yiui-3z7z8g

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

https://wolfram.com/xid/0d6fj7yiui-v95ick


https://wolfram.com/xid/0d6fj7yiui-v7v1uk

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

https://wolfram.com/xid/0d6fj7yiui-yla7fn

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

https://wolfram.com/xid/0d6fj7yiui-bqzx05

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
]}
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
]}