自定義的base64

  1 import base64
  2 import random
  3
  4 class MyBase64(object):
  5
  6     STANDARD_ALPHABET = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
  7
  8     def __init__(self, alphabet=None):
  9         if alphabet == None:
 10             alphabet = MyBase64.STANDARD_ALPHABET
 11         if len(alphabet) != len(MyBase64.STANDARD_ALPHABET):
 12             raise RuntimeError('MyBase64 init error:alphabet len should equal 64')
 13         self.alphabet = alphabet
 14
 15     def encode(self, data:str):
 16         encoded = base64.b64encode(data.encode('utf-8')).decode('utf-8')
 17         return encoded.translate(str.maketrans(MyBase64.STANDARD_ALPHABET, self.alphabet))
 18
 19     def decode(self, data:str):
 20         encoded = data.translate(str.maketrans(self.alphabet, MyBase64.STANDARD_ALPHABET))
 21         return base64.b64decode(encoded).decode('utf-8')
 22
 23     @staticmethod
 24     def random_alphabet():
 25         temp = MyBase64.STANDARD_ALPHABET
 26         out = ''
 27         while (True):
 28             size = len(temp)
 29             if size <= 0:
 30                 break
 31             index = random.randint(0, size - 1)
 32             out = out + temp[index]
 33             if index + 1 >= size:
 34                 temp = temp[0:index]
 35             else:
 36                 temp = temp[0:index] + temp[index + 1:]
 37         return out
 38 alphabet = 'uZvw0jGtx19E7O4STKfoblygzNcYiPUkQ+63DhWXVL2dAC5rJHIeFsmapRq/MBn8'
 39
 40 mybase64 = MyBase64(alphabet)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章