Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
- local sgsub, sbyte, ssub, schar, sfind = string.gsub, string.byte, string.sub, string.char, string.find
- -- encoding
- function enc(data)
- return ((sgsub(data, '.', function(x)
- local r,b='',sbyte(x)
- for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
- return r;
- end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
- if (#x < 6) then return '' end
- local c=0
- for i=1,6 do c=c+(ssub(x,i,i)=='1' and 2^(6-i) or 0) end
- return ssub(b, c+1,c+1)
- end)..({ '', '==', '=' })[#data%3+1])
- end
- -- decoding
- function dec(data)
- data = sgsub(data, '[^'..b..'=]', '')
- return (sgsub(data, '.', function(x)
- if (x == '=') then return '' end
- local r,f='',(sfind(b, x)-1)
- for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
- return r;
- end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
- if (#x ~= 8) then return '' end
- local c=0
- for i=1,8 do c=c+(ssub(x,i,i)=='1' and 2^(8-i) or 0) end
- return schar(c)
- end))
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement