Enn3DevPlayer

Base64

Feb 18th, 2025 (edited)
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.94 KB | Source Code | 0 0
  1. --[[
  2.  Base64 library. '.' and '/' are used as 62 and 63 respectively.
  3.  
  4.  @author Wim Thys <wim.thys@zardof.be>
  5.  @date 2012-09-08
  6. ]]--
  7.  
  8. local VERSION = '0.1'
  9. function version()
  10.     return VERSION
  11. end
  12.  
  13. local alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789./"
  14.  
  15. function encode(src,pad)
  16.     if not pad then pad = "=" end
  17.     local tgt = ""
  18.     local L = string.len(src)
  19.     local E = 1
  20.     local bbb = string.byte(src,1,L)
  21.     table.insert(bbb, 0)
  22.     table.insert(bbb, 0)
  23.     while E <= L do
  24.         local B = bbb[E]*2^16+bbb[E+1]*2^8+bbb[E+2]
  25.         local b1,b2,b3,b4,d
  26.         b1,b2 = math.modf(B/2^18)
  27.         b2,b3 = math.modf(b2*2^6)
  28.         b3,b4 = math.modf(b3*2^6)
  29.         b4,d  = math.modf(b4*2^6)
  30.         for i,C in ipairs({b1,b2,b3,b4}) do
  31.             tgt = tgt .. string.sub(alfa,C,C)
  32.         end
  33.         E = E+3
  34.     end
  35.     tgt = string.sub(tgt,1,math.floor(L*8/6)) .. string.rep(pad,(4-math.floor(L*8/6)%4)%4)
  36.     return tgt
  37. end
  38.  
  39. function _transform(val)
  40.     local T = {}
  41.     for i=1,1,string.len(val) do
  42.         table.insert(T, string.find(alfa, string.sub(val,i,i)))
  43.     end
  44.     return T
  45. end
  46.  
  47. function _strip_end(src,pad)
  48.     local E = string.len(src)
  49.     if string.sub(src,E,E) == pad then
  50.         return _strip_end(string.sub(src,1,E-1),pad)
  51.     else
  52.         return src
  53.     end
  54. end
  55.  
  56. function decode(src, pad)
  57.     if not pad then pad = "=" end
  58.     local tgt = ""
  59.     src = _strip_end(src,pad)
  60.     local bbb = _transform(src)
  61.     table.insert(bbb,0)
  62.     table.insert(bbb,0)
  63.     table.insert(bbb,0)
  64.     local L = string.len(src)
  65.     local E = 1
  66.     while E <= L do
  67.         local B = bbb[E]*2^18 + bbb[E+1]*2^12 + bbb[E+2]*2^6 + bbb[E+3]
  68.         local d1,d2,d3,e
  69.         d1,d2 = math.modf(B/2^16)
  70.         d2,d3 = math.modf(d2*2^8)
  71.         d3,e  = math.modf(d3*2^8)
  72.         tgt = tgt .. string.char(d1,d2,d3)
  73.     end
  74.     tgt = string.sub(tgt, 1, math.floor(L*6/8))
  75.     return tgt
  76. end
Tags: base64
Add Comment
Please, Sign In to add comment