EncodeString: Difference between revisions
Jump to navigation
Jump to search
m (Improved example) |
(Add base64 & base32 as #3312) |
||
Line 9: | Line 9: | ||
==Syntax== | ==Syntax== | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
string encodeString ( string algorithm, string input, table options | string encodeString ( string algorithm, string input, [table options, function callback] ) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 28: | Line 28: | ||
** '''key''': a public key to encode the input. (use [[generateKeyPair]] to create a new private and public key) | ** '''key''': a public key to encode the input. (use [[generateKeyPair]] to create a new private and public key) | ||
|21055}} | |21055}} | ||
{{Added feature/item|1.6.0|1.6.1|22402| | |||
* ''base64'' ([https://en.wikipedia.org/wiki/Base64 Base64 Encoding Algorithm]) | |||
** '''variant''': a string that defines the encoding variant. (Currently only "URL" is available) | |||
|22402}} | |||
{{Added feature/item|1.6.0|1.6.1|22402| | |||
* ''base32'' ([https://en.wikipedia.org/wiki/Base32 Base32 Encoding Algorithm]) | |||
** '''variant''': a string that defines the encoding variant. (Currently only "Hex" is available) | |||
|22402}} | |||
===Optional Arguments=== | ===Optional Arguments=== | ||
Line 43: | Line 51: | ||
** '''encodedString''': the encoded string if successful, ''false'' otherwise. If a callback was provided, ''true'' is returned immediately, and the encoded string is passed as an argument to the callback. | ** '''encodedString''': the encoded string if successful, ''false'' otherwise. If a callback was provided, ''true'' is returned immediately, and the encoded string is passed as an argument to the callback. | ||
|21055}} | |21055}} | ||
{{New items|3.0159|1.6.1| | |||
* ''base64'' | |||
** '''encodedString''': the encoded string if successful, ''false'' otherwise. If a callback was provided, ''true'' is returned immediately, and the encoded string is passed as an argument to the callback. | |||
|22402}} | |||
{{New items|3.0159|1.6.1| | |||
* ''base32'' | |||
** '''encodedString''': the encoded string if successful, ''false'' otherwise. If a callback was provided, ''true'' is returned immediately, and the encoded string is passed as an argument to the callback. | |||
|22402}} | |||
==Examples== | ==Examples== |
Revision as of 20:06, 19 February 2024
This function encodes a string using the specified algorithm. The counterpart of this function is decodeString.
Tip: If it doesn't matter which algorithm you use for the encoding, keep in mind that aes128 uses hardware acceleration so it may outperform the tea algorithm on most processors. |
Syntax
string encodeString ( string algorithm, string input, [table options, function callback] )
Required Arguments
- algorithm: The algorithm to use.
- input: The input to encode.
- options: A table with options and other necessary data for the algorithm, as detailed below.
Options for each algorithm
- tea (Tiny Encryption Algorithm)
- key: a key to encode the input with.
- aes128 (Advanced Encryption Standard in CTR mode)
- key: a key to encode the input with (must be 16 characters long).
- rsa (Rivest-Shamir-Adleman in OAEP with SHA-1 mode)
- key: a public key to encode the input. (use generateKeyPair to create a new private and public key)
Optional Arguments
- callback: providing a callback will run this function asynchronously, the arguments to the callback are the same as the returned values below.
Returns for each algorithm
- tea
- encodedString: the encoded string if successful, false otherwise. If a callback was provided, true is returned immediately, and the encoded string is passed as an argument to the callback.
- aes128
- encodedString: the encoded string if successful, false otherwise. If a callback was provided, true is returned immediately, and the encoded string is passed as an argument to the callback.
- iv (Initialization vector): this is a string generated by the encryption algorithm that is needed to decrypt the message by decodeString. If a callback was provided, true is returned immediately, and the iv is passed as an argument to the callback.
- rsa
- encodedString: the encoded string if successful, false otherwise. If a callback was provided, true is returned immediately, and the encoded string is passed as an argument to the callback.
- base64
- encodedString: the encoded string if successful, false otherwise. If a callback was provided, true is returned immediately, and the encoded string is passed as an argument to the callback.
- base32
- encodedString: the encoded string if successful, false otherwise. If a callback was provided, true is returned immediately, and the encoded string is passed as an argument to the callback.
Examples
Click to collapse [-]
ServerAdds an /encode command in which you can provide an algorithm, key and data to encode. Below is the example provided as both server-side and client-side variations.
addCommandHandler("encode", function(player, _, algorithm, key, ...) if not algorithm or not key then outputChatBox("Invalid algorithm and/or key.", player, 255, 0, 0) return end local text = table.concat({...}, " ") if type(text) ~= "string" or text == "" then outputChatBox("Please specify text in the command.", player, 255, 0, 0) return end local encoded = encodeString(algorithm, text, { key = key }) if not encoded then outputChatBox("Failed to encode. Make sure that all arguments are valid.", player, 255, 0, 0) return end outputChatBox("The result of " .. algorithm .. " encoding is: " .. encoded, player) end)
This example shows you how to use the RSA encryption with a simple string message.
local private, public = generateKeyPair("rsa", { size = 2048 }) local input = "Hello, world!" local encrypted = encodeString("rsa", input, { key = public }) local decrypted = decodeString("rsa", encrypted, { key = private }) outputServerLog("RSA test: ".. tostring(input == decrypted))
See Also
- addDebugHook
- base64Decode
- base64Encode
- debugSleep
- decodeString
- encodeString
- fromJSON
- generateKeyPair
- getColorFromString
- getDevelopmentMode
- getDistanceBetweenPoints2D
- getDistanceBetweenPoints3D
- getEasingValue
- getNetworkStats
- getNetworkUsageData
- getPerformanceStats
- getRealTime
- getTickCount
- getTimerDetails
- getTimers
- getFPSLimit
- getUserdataType
- getVersion
- gettok
- isTransferBoxVisible
- setTransferBoxVisible
- hash
- inspect
- interpolateBetween
- iprint
- isOOPEnabled
- isTimer
- killTimer
- md5
- passwordHash
- passwordVerify
- pregFind
- pregMatch
- pregReplace
- removeDebugHook
- resetTimer
- setDevelopmentMode
- setFPSLimit
- setTimer
- ref
- deref
- sha256
- split
- teaDecode
- teaEncode
- toJSON
- tocolor
- getProcessMemoryStats
- utfChar
- utfCode
- utfLen
- utfSeek
- utfSub
- bitAnd
- bitNot
- bitOr
- bitXor
- bitTest
- bitLRotate
- bitRRotate
- bitLShift
- bitRShift
- bitArShift
- bitExtract
- bitReplace