fileGetHash | Multi Theft Auto: Wiki Skip to content

fileGetHash

Client-side
Server-side
Shared

Added in 1.6.0 r23289

This function returns a hash of the entire file in the specified algorithm. This function does not move the file pointer/position. Beware though, there will always be a minuscule period of time between checking the hash and loading the contents of the file, which can be abused by a potential attacker to modify the contents.

OOP Syntax Help! I don't understand this!

  • Method:file:getHash(...)

Syntax

string|nil fileGetHash ( ​file theFile, ​string algorithm, [ ​table options = nil ] )
Required arguments
  • theFile: A handle to the file you wish to get the hash from. Use fileOpen to obtain this handle.
  • algorithm: A string which must be one of these: "md5", "sha1", "sha224", "sha256", "sha384", "sha512", "hmac".
Optional arguments

Note: when using optional arguments, you might need to supply all arguments before the one you wish to use.

  • options (default: nil): A table with options and other necessary data for the algorithm, as detailed below.
    • hmac (HMAC)
      • key: a key to encode the input with.
      • algorithm: a string which must be one of these: "md5", "sha1", "sha224", "sha256", "sha384", "sha512".

Returns

Returns the hash of the entire file on success, and nil on failure.

  • string|nil: file hash

Code Examples

shared

This example opens the code.lua file, computes the hash with every algorithm, and then displays them.

local handle = fileOpen("code.lua", true)
local hashMD5 = fileGetHash(handle, "md5")
local hashSHA1 = fileGetHash(handle, "sha1")
local hashSHA224 = fileGetHash(handle, "sha224")
local hashSHA256 = fileGetHash(handle, "sha256")
local hashSHA384 = fileGetHash(handle, "sha384")
local hashSHA512 = fileGetHash(handle, "sha512")
local hashHMAC = fileGetHash(handle, "hmac", { algorithm = "sha256", key = "blue apple tree" })
fileClose(handle)
iprint("MD5", hashMD5)
iprint("SHA1", hashSHA1)
iprint("SHA224", hashSHA224)
iprint("SHA256", hashSHA256)
iprint("SHA384", hashSHA384)
iprint("SHA512", hashSHA512)