View difference between Paste ID: ntsWPAcq and akCTxrsA
SHOW: | | - or go back to the newest paste.
1-
-- Base64

1+
local b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
2-

2+
function encode(data)
3-
-- Characters

3+
    return ((data:gsub('.', function(x) 
4-
local b = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

4+
        local r,b='',x:byte()
5-

5+
        for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
6-
-- Encoding

6+
        return r;
7-
function encode(data)

7+
    end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
8-
    return ((data:gsub('.', function(x) 

8+
        if (#x < 6) then return '' end
9-
        local r,b='',x:byte()

9+
        local c=0
10-
        for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end

10+
        for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
11-
        return r;

11+
        return b:sub(c+1,c+1)
12-
    end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)

12+
    end)..({ '', '==', '=' })[#data%3+1])
13-
        if (#x < 6) then return '' end

13+
end
14-
        local c=0

14+
15-
        for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end

15+
function decode(data)
16-
        return b:sub(c+1,c+1)

16+
    data = string.gsub(data, '[^'..b..'=]', '')
17-
    end)..({ '', '==', '=' })[#data%3+1])

17+
    return (data:gsub('.', function(x)
18-
end

18+
        if (x == '=') then return '' end
19-

19+
        local r,f='',(b:find(x)-1)
20-
-- Decoding

20+
        for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
21-
function decode(data)

21+
        return r;
22-
    data = string.gsub(data, '[^'..b..'=]', '')

22+
    end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
23-
    return (data:gsub('.', function(x)

23+
        if (#x ~= 8) then return '' end
24-
        if (x == '=') then return '' end

24+
        local c=0
25-
        local r,f='',(b:find(x)-1)

25+
        for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
26-
        for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end

26+
        return string.char(c)
27-
        return r;

27+
    end))
28-
    end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)

28+