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.
FileHash
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:
-
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 all close allBasic Examples (5)
FileHash[FindFile["ExampleData/ocelot.jpg"]]The "SHA512" hash code of a file:
FileHash[FindFile["ExampleData/ocelot.jpg"], "SHA512"]The "SHA512" hash code of the first 100 bytes of a file:
FileHash[{FindFile["ExampleData/ocelot.jpg"], 100}, "SHA512"]The "MD5" hash code in hexadecimal form:
FileHash[FindFile["ExampleData/ocelot.jpg"], "MD5", "HexString"]Hash of a CloudObject:
obj = CloudPut[123, "test"];FileHash[obj]FileHash[obj, "SHA256"]Scope (11)
File and Range Specifications (6)
Compute a hash for the first 100 bytes of a file:
glasses = FindFile["ExampleData/glasses.png"];FileHash[{File[glasses], 100}, "SHA"]FileHash[{File[glasses], {1, 100}}, "SHA"]Compute a hash for the last 100 bytes:
FileHash[{File[glasses], -100}, "SHA"]FileHash[{File[glasses], {-100, -1}}, "SHA"]Compute a hash for bytes 100 through 200:
FileHash[{File[glasses], {100, 200}}, "SHA"]Compute a hash for all bytes except the first 100 or the last 100:
FileHash[{File[glasses], {101, -101}}, "SHA"]Compute the hash for byte 100 only:
FileHash[{File[glasses], {100}}, "SHA"]FileHash[{File[glasses], 0}, "SHA"]Compute the hashes of several files:
FileHash[{FindFile["ExampleData/spikey2.png"], FindFile["ExampleData/ocelot.jpg"], FindFile["ExampleData/pearls.png"]}]Find the hash for a complete file as well as several subsets of it:
pearls = FindFile["ExampleData/pearls.png"];FileHash[{pearls, {pearls, 100}, {pearls, {101, -101}} , {pearls, -100}}]Create a CloudObject:
obj = CloudPut[46, "test"];Find the hash of the data contained in the CloudObject:
FileHash[obj]By default, MD5 hash of the full range is calculated:
FileHash[{obj, {1, -1}}, "MD5", "Integer"]For hashing, the data from the CloudObject is represented as a string including the newline:
Hash[ToString[46] <> "
", "MD5"]The same hash using the sequence of bytes:
Hash[StringToByteArray["46
"], "MD5"]strm = OpenRead["ExampleData/glasses.png", BinaryFormat -> True]FileHash[strm]The same result is given independently of the current stream position:
SetStreamPosition[strm, 50]FileHash[strm]Close[strm]Create an empty file and cloud object:
co = CloudObject[];
file = CreateFile[];Put the same content in the file and cloud object:
Put[46!, file];
CloudPut[46!, co];Also open a stream pointing at the file:
strm = OpenRead[file, BinaryFormat -> True]The hashes of all three objects are the same:
FileHash[{File[file], co, strm}]Close[strm];Hash Types and Formats (5)
Grid[{#, FileHash[FindFile["ExampleData/pearls.png"], #]}& /@ {"Adler32", "CRC32", "MD2", "MD4", "MD5", "RIPEMD160", "RIPEMD160SHA256", "SHA", "SHA256", "SHA256SHA256", "SHA384", "SHA512"}, Alignment -> Left, Dividers -> All]512-bit SHA code given as an integer:
FileHash[FindFile["ExampleData/ocelot.jpg"], "SHA512", "Integer"]IntegerQ[%]512-bit SHA code given as a decimal string, including leading zeros:
FileHash[FindFile["ExampleData/ocelot.jpg"], "SHA512", "DecimalString"]StringQ[%]Compare the different string representations of a hash:
Grid[{#, FileHash[FindFile["ExampleData/ocelot.jpg"], "SHA", #]}& /@ {"DecimalString", "HexString", "Base36String", "Base64Encoding"}, Alignment -> Left]The double SHA code of the first 50 bytes of a file, given as a ByteArray:
ba = FileHash[{FindFile["ExampleData/financialtimeseries.csv"], 50}, "SHA256SHA256", "ByteArray"]The byte array contains the 256 bits of the result:
256 == Length[ba] * 8View the individual bytes in the array:
ba//NormalProperties & Relations (10)
FileHash[FindFile["ExampleData/atoms.wxf"]] == FileHash[FindFile["ExampleData/atoms.wxf"], "MD5"]The default range specification is All:
FileHash[FindFile["ExampleData/atoms.wxf"], "MD5"] == FileHash[{FindFile["ExampleData/atoms.wxf"], All}, "MD5"]FileHash[FindFile["ExampleData/atoms.wxf"], "MD5"] == FileHash[{FindFile["ExampleData/atoms.wxf"], {1, -1}}, "MD5"]Hashing zero bytes is equivalent to finding the hash of an empty file:
file = CreateFile[];FileHash[{FindFile["ExampleData/atoms.wxf"], 0}, "MD5"] == FileHash[{file, 0}, "MD5"]DeleteFile[file]"Integer" is the default format:
FileHash[FindFile["ExampleData/atoms.wxf"], "MD5"] == FileHash[FindFile["ExampleData/atoms.wxf"], "MD5", "Integer"]"DecimalString" is the string version of "Integer", padded with zeros if necessary:
{FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32"], FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32", "DecimalString"]}"HexString" is a base-16 representation, padded with zeros if necessary:
{FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32"], FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32", "HexString"]}"Base36String" is a base-36 representation, padded with zeros if necessary:
{FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32"], FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32", "Base36String"]}"Base64Encoding" encodes bytes of the result using Base64 encoding:
FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32", "Base64Encoding"]% === BaseEncode[FileHash[{FindFile["ExampleData/atoms.wxf"], 1}, "Adler32", "ByteArray"]]FileHash[file,code] is effectively equivalent to Hash[ReadByteArray[file],code]:
FileHash[FindFile["ExampleData/ocelot.jpg"], "MD5"] === Hash[ReadByteArray[FindFile["ExampleData/ocelot.jpg"]], "MD5"]FileHash[file,code] is effectively equivalent to Hash[ByteArray@Import[file,"Byte"]]:
FileHash[FindFile["ExampleData/ocelot.jpg"], "SHA"] == Hash[ByteArray@Import["ExampleData/ocelot.jpg", "Byte"], "SHA"]Related Guides
Text
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.
APA
Wolfram Language. (2007). FileHash. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/FileHash.html
BibTeX
@misc{reference.wolfram_2026_filehash, author="Wolfram Research", title="{FileHash}", year="2020", howpublished="\url{https://reference.wolfram.com/language/ref/FileHash.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_filehash, organization={Wolfram Research}, title={FileHash}, year={2020}, url={https://reference.wolfram.com/language/ref/FileHash.html}, note=[Accessed: 12-June-2026]}