Awesome
Lua base64 encoder/decoder
Pure Lua base64 encoder/decoder. Works with Lua 5.1+ and LuaJIT. Fallbacks to pure Lua bit operations if bit/bit32/native bit operators are not available.
local base64 = require'base64'
local str = 'Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.'
local b64str = 'TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4='
local encoded = base64.encode( str )
local decoded = base64.decode( b64str )
assert( str == decoded )
assert( b64str == encoded )
base64.encode( str, encoder = DEFAULT, usecache = false )
Encodes str
string using encoder
table. By default uses table with +
as
char for 62, /
as char for 63 and =
as padding char. You can specify custom
encoder. For this you could use base64.makeencoder
. If you are encoding large
chunks of text (or another highly redundant data) it's possible to highly
increase performace (for text approx. x2 gain) by using usecache = true
. For
binary data like images using cache decreasing performance.
base64.decode( str, decoder = DEFAULT, usecache = false )
Decodes str
string using decoder
table. Default decoder uses same chars as
default encoder.
base64.makeencoder( s62 = '+', s63 = '/', spad = '=' )
Make custom encoding table
base64.makedecoder( s62 = '+', s63 = '/', spad = '=' )
Make custom decoding table
Install
luarocks install base64