Skip to content
  • hash() hashes an arbitrary R object.

  • hash_file() hashes the data contained in a file.

The generated hash is guaranteed to be reproducible across platforms that have the same endianness and are using the same R version.

Usage

hash(x)

hash_file(path)

Arguments

x

An object.

path

A character vector of paths to the files to be hashed.

Value

  • For hash(), a single character string containing the hash.

  • For hash_file(), a character vector containing one hash per file.

Details

These hashers use the XXH128 hash algorithm of the xxHash library, which generates a 128-bit hash. Both are implemented as streaming hashes, which generate the hash with minimal extra memory usage.

For hash(), objects are converted to binary using R's native serialization tools. On R >= 3.5.0, serialization version 3 is used, otherwise version 2 is used. See serialize() for more information about the serialization version.

Examples

hash(c(1, 2, 3))
#> [1] "702f7dd6e81ea41d26ea3b248627ece4"
hash(mtcars)
#> [1] "d0487363db4e6cc64fdb740cb6617fc0"

authors <- file.path(R.home("doc"), "AUTHORS")
copying <- file.path(R.home("doc"), "COPYING")
hashes <- hash_file(c(authors, copying))
hashes
#> [1] "75e0b18fa50ddd8296f143c587e3eb43" "cdb3a24318136e74f38209c219ca104b"

# If you need a single hash for multiple files,
# hash the result of `hash_file()`
hash(hashes)
#> [1] "fb8152f9b31bfbcf4e8778c4cbc8c6b7"