python實(shí)現(xiàn)的base64encode

關(guān)于Base64編碼原理,這里推薦一篇很好的博客一篇文章徹底弄懂Base64編碼原理

然后以下是我的python實(shí)現(xiàn):

# coding:utf-8
import base64

ALPHA=[chr(i) for i in range(65,91)]
alpha=[chr(i) for i in range(97,123)]
digit = [str(i) for i in range(0,10)]
ALPHA.extend(alpha)
ALPHA.extend(digit)
ALPHA.append('+')
ALPHA.append("/")
table = {}
# 構(gòu)建映射表
for i,v in enumerate(ALPHA):
    table[i]=v

class Myencoder():
    def __init__(self,yard=8,table={}):
        self.table=table
        self.yard=yard
    def baseEncode(self,target):
        if not isinstance(target,bytes) and not isinstance(target,str):
            raise TypeError('不是可以編碼的類型')
        result = ""
        for i in range(0,len(target),3):
            tlist = ""
            current = target[i:i+3]
            for curr in current:
                tlist+=self.bianma(curr)
            tr = []
            for i in range(len(tlist) - 6, -1, -6):
                nowaday = tlist[i:i + 6]
                tr.append(nowaday)
            tr.reverse()
            tr = [int(v.zfill(8),2) for v in tr]
            tr = [self.table[key] for key in tr]
            if len(current) == 3:
                pass
            elif len(current) == 2:
                tr.append("=")
            elif len(current) == 1:
                tr.append('=')
                tr.append('=')
            result += ''.join(tr)
        return result

    def bianma(self,ma):
        otar = ord(ma)
        btar = bin(otar)
        btar = btar[2:]
        btar=btar.zfill(8)
        return btar
myencoder = Myencoder(table=table)
print(myencoder.baseEncode('sfimsi'))
print(base64.b64encode(b'sfimsi'))
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容