Functional Base64 prior to cleanup
This commit is contained in:
parent
1c709b838b
commit
b1f87f3ffa
31
b64.lua
31
b64.lua
@ -108,6 +108,34 @@ function enc(data)
|
||||
return result
|
||||
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
|
||||
local base64bytes = {
|
||||
['A']=0,
|
||||
@ -183,7 +211,8 @@ function dec(data)
|
||||
local chars = {}
|
||||
local result=""
|
||||
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
|
||||
for char=1,4 do chars[char] = toBase64Byte((string.sub(data,(dpos+char),(dpos+char)) or "=")) end
|
||||
result = string.format(
|
||||
'%s%s%s%s',
|
||||
result,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user