octave: Hashing Functions

 
 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));