36.12 Hashing Functions

It is often necessary to find if two strings or files are identical. This might be done by comparing them character by character and looking for differences. However, this can be slow, and so comparing a hash of the string or file can be a rapid way of finding if the files differ.

Another use of the hashing function is to check for file integrity. The user can check the hash of the file against a known value and find if the file they have is the same as the one that the original hash was produced with.

Octave supplies the hash function to calculate hash values of strings and files, the latter in combination with the fileread function. The hash function supports the most common used cryptographic hash functions, namely MD5 and SHA-1.

: hash (hfun, str)

Calculate the hash value of the string str using the hash function hfun.

The available hash functions are given in the table below.

MD2

Message-Digest Algorithm 2 (RFC 1319).

MD4

Message-Digest Algorithm 4 (RFC 1320).

MD5

Message-Digest Algorithm 5 (RFC 1321).

SHA1

Secure Hash Algorithm 1 (RFC 3174)

SHA224

Secure Hash Algorithm 2 (224 Bits, RFC 3874)

SHA256

Secure Hash Algorithm 2 (256 Bits, RFC 6234)

SHA384

Secure Hash Algorithm 2 (384 Bits, RFC 6234)

SHA512

Secure Hash Algorithm 2 (512 Bits, RFC 6234)

To calculate for example the MD5 hash value of the string "abc" the hash function is called as follows:

hash ("md5", "abc")
     -| ans = 900150983cd24fb0d6963f7d28e17f72

For the same string, the SHA-1 hash value is calculated with:

hash ("sha1", "abc")
     -| ans = a9993e364706816aba3e25717850c26c9cd0d89d

And to compute the hash value of a file, e.g., file = "file.txt", call hash in combination with the fileread:

hash ("md5", fileread (file));

© 1996–2020 John W. Eaton
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://octave.org/doc/v6.3.0/Hashing-Functions.html