Jump to content

Encoding/decoding


Orange

Recommended Posts

There are few implentations of encodings into MTA:

Base64 Encoding

function base64_enc(data)
   return ((data:gsub('.', function(x) 
       local r,b='',x:byte()
       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+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
       return b:sub(c+1,c+1)
   end)..({ '', '==', '=' })[#data%3+1])
end

USAGE: base64_enc('string') encodes 'string'

Base64 Decoding

function base64_dec(data)
   data = string.gsub(data, '[^'..b..'=]', '')
   return (data:gsub('.', function(x)
       if (x == '=') then return '' end
       local r,f='',(b:find(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 ~=  then return '' end
       local c=0
       for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
       return string.char(c)
   end))
end

USAGE: base64_dec('KDFHSKJ87987KJSHAKJD9') decodes 'KDFHSKJ87987KJSHAKJD9'

Edited by Guest
Link to comment

There are few implentations of encodings into MTA:

Base64 Encoding

function base64_enc(data)    return ((data:gsub('.', function(x)         local r,b='',x:byte()        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+(x:sub(i,i)=='1' and 2^(6-i) or 0) end        return b:sub(c+1,c+1)    end)..({ '', '==', '=' })[#data%3+1])end

USAGE: base64_enc('string') encodes 'string'

Base64 Decoding

function base64_dec(data)    data = string.gsub(data, '[^'..b..'=]', '')    return (data:gsub('.', function(x)        if (x == '=') then return '' end        local r,f='',(b:find(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 ~=  then return '' end        local c=0        for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end        return string.char(c)    end))end

USAGE: base64_dec('KDFHSKJ87987KJSHAKJD9') decodes 'KDFHSKJ87987KJSHAKJD9'

Edited by Guest
Link to comment

Base 64 clearly isn't encryption. It's encoding, don't expect this to fool any but the most amateur hacker. Base 64 encoded text also tends to be fairly distinctive, if nothing else than it's tendency to have = or == at the end.

Link to comment

Base 64 clearly isn't encryption. It's encoding, don't expect this to fool any but the most amateur hacker. Base 64 encoded text also tends to be fairly distinctive, if nothing else than it's tendency to have = or == at the end.

Link to comment

eAi is right, as encryption this isn't of much use. In cryptography, base64 is commonly used to "stringify" byte arrays that have been ran through some other form of crypto algorithm, not by itself. Also, as eAi said, it is pretty easy to identify and decode.

Link to comment

eAi is right, as encryption this isn't of much use. In cryptography, base64 is commonly used to "stringify" byte arrays that have been ran through some other form of crypto algorithm, not by itself. Also, as eAi said, it is pretty easy to identify and decode.

Link to comment

I'm crazy today :P Ofc, it's not guide.

Found a new one:

-- encryption table
local base64chars = {[0]='A',[1]='B',[2]='C',[3]='D',[4]='E',[5]='F',[6]='G',[7]='H',[8]='I',[9]='J',[10]='K',[11]='L',[12]='M',[13]='N',[14]='O',[15]='P',[16]='Q',[17]='R',[18]='S',[19]='T',[20]='U',[21]='V',[22]='W',[23]='X',[24]='Y',[25]='Z',[26]='a',[27]='b',[28]='c',[29]='d',[30]='e',[31]='f',[32]='g',[33]='h',[34]='i',[35]='j',[36]='k',[37]='l',[38]='m',[39]='n',[40]='o',[41]='p',[42]='q',[43]='r',[44]='s',[45]='t',[46]='u',[47]='v',[48]='w',[49]='x',[50]='y',[51]='z',[52]='0',[53]='1',[54]='2',[55]='3',[56]='4',[57]='5',[58]='6',[59]='7',[60]='8',[61]='9',[62]='-',[63]='_'}
 
-- function encode
-- encodes input string to base64.
function enc(data)
local bytes = {}
local result = ""
for spos=0,string.len(data)-1,3 do
	for byte=1,3 do bytes[byte] = string.byte(string.sub(data,(spos+byte))) or 0 end
	result = string.format('%s%s%s%s%s',result,base64chars[rsh(bytes[1],2)],base64chars[lor(lsh((bytes[1] % 4),4), rsh(bytes[2],4))] or "=",((#data-spos) > 1) and base64chars[lor(lsh(bytes[2] % 16,2), rsh(bytes[3],6))] or "=",((#data-spos) > 2) and base64chars[(bytes[3] % 64)] or "=")
end
return result
end
 
-- decryption table
local base64bytes = {['A']=0,['B']=1,['C']=2,['D']=3,['E']=4,['F']=5,['G']=6,['H']=7,['I']=8,['J']=9,['K']=10,['L']=11,['M']=12,['N']=13,['O']=14,['P']=15,['Q']=16,['R']=17,['S']=18,['T']=19,['U']=20,['V']=21,['W']=22,['X']=23,['Y']=24,['Z']=25,['a']=26,['b']=27,['c']=28,['d']=29,['e']=30,['f']=31,['g']=32,['h']=33,['i']=34,['j']=35,['k']=36,['l']=37,['m']=38,['n']=39,['o']=40,['p']=41,['q']=42,['r']=43,['s']=44,['t']=45,['u']=46,['v']=47,['w']=48,['x']=49,['y']=50,['z']=51,['0']=52,['1']=53,['2']=54,['3']=55,['4']=56,['5']=57,['6']=58,['7']=59,['8']=60,['9']=61,['-']=62,['_']=63,['=']=nil}
 
-- function decode
-- decode base64 input to string
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
	result = string.format('%s%s%s%s',result,string.char(lor(lsh(chars[1],2), rsh(chars[2],4))),(chars[3] ~= nil) and string.char(lor(lsh(chars[2],4), rsh(chars[3],2))) or "",(chars[4] ~= nil) and string.char(lor(lsh(chars[3],6) % 192, (chars[4]))) or "")
end
return result
end

Link to comment

I'm crazy today :P Ofc, it's not guide.

Found a new one:

-- encryption tablelocal base64chars = {[0]='A',[1]='B',[2]='C',[3]='D',[4]='E',[5]='F',[6]='G',[7]='H',[8]='I',[9]='J',[10]='K',[11]='L',[12]='M',[13]='N',[14]='O',[15]='P',[16]='Q',[17]='R',[18]='S',[19]='T',[20]='U',[21]='V',[22]='W',[23]='X',[24]='Y',[25]='Z',[26]='a',[27]='b',[28]='c',[29]='d',[30]='e',[31]='f',[32]='g',[33]='h',[34]='i',[35]='j',[36]='k',[37]='l',[38]='m',[39]='n',[40]='o',[41]='p',[42]='q',[43]='r',[44]='s',[45]='t',[46]='u',[47]='v',[48]='w',[49]='x',[50]='y',[51]='z',[52]='0',[53]='1',[54]='2',[55]='3',[56]='4',[57]='5',[58]='6',[59]='7',[60]='8',[61]='9',[62]='-',[63]='_'} -- function encode-- encodes input string to base64.function enc(data)	local bytes = {}	local result = ""	for spos=0,string.len(data)-1,3 do		for byte=1,3 do bytes[byte] = string.byte(string.sub(data,(spos+byte))) or 0 end		result = string.format('%s%s%s%s%s',result,base64chars[rsh(bytes[1],2)],base64chars[lor(lsh((bytes[1] % 4),4), rsh(bytes[2],4))] or "=",((#data-spos) > 1) and base64chars[lor(lsh(bytes[2] % 16,2), rsh(bytes[3],6))] or "=",((#data-spos) > 2) and base64chars[(bytes[3] % 64)] or "=")	end	return resultend -- decryption tablelocal base64bytes = {['A']=0,['B']=1,['C']=2,['D']=3,['E']=4,['F']=5,['G']=6,['H']=7,['I']=8,['J']=9,['K']=10,['L']=11,['M']=12,['N']=13,['O']=14,['P']=15,['Q']=16,['R']=17,['S']=18,['T']=19,['U']=20,['V']=21,['W']=22,['X']=23,['Y']=24,['Z']=25,['a']=26,['b']=27,['c']=28,['d']=29,['e']=30,['f']=31,['g']=32,['h']=33,['i']=34,['j']=35,['k']=36,['l']=37,['m']=38,['n']=39,['o']=40,['p']=41,['q']=42,['r']=43,['s']=44,['t']=45,['u']=46,['v']=47,['w']=48,['x']=49,['y']=50,['z']=51,['0']=52,['1']=53,['2']=54,['3']=55,['4']=56,['5']=57,['6']=58,['7']=59,['8']=60,['9']=61,['-']=62,['_']=63,['=']=nil} -- function decode-- decode base64 input to stringfunction 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		result = string.format('%s%s%s%s',result,string.char(lor(lsh(chars[1],2), rsh(chars[2],4))),(chars[3] ~= nil) and string.char(lor(lsh(chars[2],4), rsh(chars[3],2))) or "",(chars[4] ~= nil) and string.char(lor(lsh(chars[3],6) % 192, (chars[4]))) or "")	end	return resultend

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...