2.6 KiB
crypto Module
The crypto modules provides various functions for working with cryptographic algorithms.
crypto.hash()
Compute a cryptographic hash of a Lua string.
####Syntax
hash = crypto.hash(algo, str)
####Parameters
algo
: The hash algorithm to use, case insensitive string
Supported hash algorithms are:
- MD2 (not available by default, has to be explicitly enabled in user_config.h)
- MD5
- SHA1
- SHA256, SHA384, SHA512 (unless disabled in user_config.h)
####Returns
A binary string containing the message digest. To obtain the textual version (ASCII hex characters), please use crypto.toHex()
.
####Example
print(crypto.toHex(crypto.hash("sha1","abc")))
crypto.hmac()
Compute a HMAC (Hashed Message Authentication Code) signature for a Lua string.
Syntax
signature = crypto.hmac(algo, str, key)
####Parameters
- algo: hash algorithm to use, case insensitive string
- str: data to calculate the hash for
- key: key to use for signing, may be a binary string
Supported hash algorithms are:
- MD2 (not available by default, has to be explicitly enabled in user_config.h)
- MD5
- SHA1
- SHA256, SHA384, SHA512 (unless disabled in user_config.h)
####Returns
A binary string containing the HMAC signature. Use crypto.toHex()
to obtain the textual version.
####Example
print(crypto.toHex(crypto.hmac("sha1","abc","mysecret")))
crypto.mask()
Applies an XOR mask to a Lua string. Note that this is not a proper cryptographic mechanism, but some protocols may use it nevertheless.
####Syntax masked = crypto.mask (message, mask)
####Parameters
- message: message to mask
- mask = the mask to apply, repeated if shorter than the message
####Returns
The masked message, as a binary string. Use crypto.toHex()
to get a textual representation of it.
####Example
print(crypto.toHex(crypto.mask("some message to obscure","X0Y7")))
crypto.toHex()
Provides an ASCII hex representation of a (binary) Lua string. Each byte in the input string is represented as two hex characters in the output.
####Syntax
hexstr = crypto.toHex(binary)
####Parameters
binary
: input string to get hex representation for
####Returns An ASCII hex string.
####Example
print(crypto.toHex(crypto.hash("sha1","abc")))
crypto.toBase64()
Provides a Base64 representation of a (binary) Lua string.
####Syntax
b64 = crypto.toBase64(binary)
####Parameters
binary
: input string to Base64 encode
####Return A Base64 encoded string.
####Example
print(crypto.toBase64(crypto.hash("sha1","abc")))