Functional Base64 prior to cleanup
This commit is contained in:
parent
1c709b838b
commit
b1f87f3ffa
33
b64.lua
33
b64.lua
@ -108,6 +108,34 @@ function enc(data)
|
|||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function toBase64Byte(char)
|
||||||
|
ascii = string.byte(char, 1)
|
||||||
|
if ascii >= string.byte('A', 1) and ascii <= string.byte('Z', 1) then
|
||||||
|
return ascii - string.byte('A', 1)
|
||||||
|
elseif ascii >= string.byte('a', 1) and ascii <= string.byte('z', 1) then
|
||||||
|
return ascii - string.byte('a', 1) + 26
|
||||||
|
elseif ascii >= string.byte('0', 1) and ascii <= string.byte('9', 1) then
|
||||||
|
return ascii + 4
|
||||||
|
elseif ascii == string.byte('-', 1) then
|
||||||
|
return 62
|
||||||
|
elseif ascii == string.byte('_', 1) then
|
||||||
|
return 63
|
||||||
|
elseif ascii == string.byte('=', 1) then
|
||||||
|
return nil
|
||||||
|
else
|
||||||
|
return "ERROR! Char is invalid for Base64 encoding: "..char
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
print(toBase64Byte('A'))
|
||||||
|
print(toBase64Byte('B'))
|
||||||
|
print(toBase64Byte('C'))
|
||||||
|
print(toBase64Byte('D'))
|
||||||
|
print(toBase64Byte('a'))
|
||||||
|
print(toBase64Byte('b'))
|
||||||
|
print(toBase64Byte('c'))
|
||||||
|
print(toBase64Byte('d'))
|
||||||
|
|
||||||
-- decryption table
|
-- decryption table
|
||||||
local base64bytes = {
|
local base64bytes = {
|
||||||
['A']=0,
|
['A']=0,
|
||||||
@ -183,8 +211,9 @@ function dec(data)
|
|||||||
local chars = {}
|
local chars = {}
|
||||||
local result=""
|
local result=""
|
||||||
for dpos=0,string.len(data)-1,4 do
|
for dpos=0,string.len(data)-1,4 do
|
||||||
for char=1,4 do chars[char] = base64bytes[(string.sub(data,(dpos+char),(dpos+char)) or "=")] end
|
-- for char=1,4 do chars[char] = base64bytes[(string.sub(data,(dpos+char),(dpos+char)) or "=")] end
|
||||||
result = string.format(
|
for char=1,4 do chars[char] = toBase64Byte((string.sub(data,(dpos+char),(dpos+char)) or "=")) end
|
||||||
|
result = string.format(
|
||||||
'%s%s%s%s',
|
'%s%s%s%s',
|
||||||
result,
|
result,
|
||||||
string.char(lor(lsh(chars[1],2), rsh(chars[2],4))),
|
string.char(lor(lsh(chars[1],2), rsh(chars[2],4))),
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user