Python?Base64編碼和解碼操作
Base64編碼和解碼
Base64 不是加密算法,只是一種編碼方式,數(shù)據(jù)從一種形式轉(zhuǎn)換為另一種形式進行傳輸/存儲。Base64 就是一種基于64個可打印字符來表示二進制數(shù)據(jù)的方法。
Base64要求把每三個8Bit的字節(jié)轉(zhuǎn)換為四個6Bit的字節(jié)(38 = 46 = 24),然后把6Bit再添兩位高位0,組成四個8Bit的字節(jié),也就是說,轉(zhuǎn)換后的字符串理論上將要比原來的長1/3。最后,用一個碼表來得到我們想要的字符串,這就是 Base64編碼。
碼表:
索引 | 對應(yīng)字符 | 索引 | 對應(yīng)字符 | 索引 | 對應(yīng)字符 | 索引 | 對應(yīng)字符 |
0 | A | 17 | R | 34 | i | 51 | z |
1 | B | 18 | S | 35 | j | 52 | 0 |
2 | C | 19 | T | 36 | k | 53 | 1 |
3 | D | 20 | U | 37 | l | 54 | 2 |
4 | E | 21 | V | 38 | m | 55 | 3 |
5 | F | 22 | W | 39 | n | 56 | 4 |
6 | G | 23 | X | 40 | o | 57 | 5 |
7 | H | 24 | Y | 41 | p | 58 | 6 |
8 | I | 25 | Z | 42 | q | 59 | 7 |
9 | J | 26 | a | 43 | r | 60 | 8 |
10 | K | 27 | b | 44 | s | 61 | 9 |
11 | L | 28 | c | 45 | t | 62 | + |
12 | M | 29 | d | 46 | u | 63 | / |
13 | N | 30 | e | 47 | v | ||
14 | O | 31 | f | 48 | w | ||
15 | P | 32 | g | 49 | x | ||
16 | Q | 33 | h | 50 | y |
Python 中集成了base64 模塊,可用于對二進制數(shù)據(jù)進行編碼解碼操作:
>>> a = "Hello world" >>> b = base64.encode(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: encode() missing 1 required positional argument: 'output' >>> >>> >>> b = base64.b64encode(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python3.8/base64.py", line 58, in b64encode encoded = binascii.b2a_base64(s, newline=False) TypeError: a bytes-like object is required, not 'str' >>> >>> >>> >>> a = b"Hello world" >>> b = base64.b64encode(a) >>> b b'SGVsbG8gd29ybGQ=' >>> c = base64.b64decode(b) >>> c b'Hello world' >>> d = b.decode('ascii') >>> d 'SGVsbG8gd29ybGQ=' >>> e = base64.b64decode(d) >>> e b'Hello world' >>>
可以看到使用 base64.b64encode 進行編碼時,只能時二進制數(shù)據(jù),如果輸入時 str 文本,將報錯 TypeError。
而使用 base64.b64decode 解碼時,字符串和字節(jié)床都可以作為輸入。
到此這篇關(guān)于Python Base64編碼和解碼的文章就介紹到這了,更多相關(guān)Python Base64編碼和解碼內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python3.5實現(xiàn)socket通訊示例(TCP)
本篇文章主要介紹了python3.5實現(xiàn)socket通訊示例(TCP),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02探索Python元類的魅力:靈活定制類的創(chuàng)建過程
在Python編程中,元類(Metaclass)是一項高級特性,它允許我們在定義類的時候動態(tài)地控制類的創(chuàng)建過程。元類提供了一種強大的機制,可以對類進行定制化,擴展其功能,并在類的實例化過程中執(zhí)行額外的操作,本文將深入解析2023-10-10pygame學(xué)習(xí)筆記(2):畫點的三種方法和動畫實例
這篇文章主要介紹了pygame學(xué)習(xí)筆記(2):畫點的三種方法和動畫實例,本文講解了單個像素(畫點)、連接多個點形成線、引用圖像、動畫完整實例,需要的朋友可以參考下2015-04-04昨晚我用python幫隔壁小姐姐P證件照然后發(fā)現(xiàn)
大家好,我是Lex 喜歡欺負(fù)超人那個Lex 建議大家收藏哦,以后幫小姐姐P自拍,證件照,調(diào)尺寸,背景,摳圖,直接10行代碼搞定,瞬間高大上2021-08-08Python人工智能之路 jieba gensim 最好別分家之最簡單的相似度實現(xiàn)
這篇文章主要介紹了Python人工智能之路 jieba gensim 最好別分家之最簡單的相似度實現(xiàn) ,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08利用selenium爬蟲抓取數(shù)據(jù)的基礎(chǔ)教程
這篇文章主要給大家介紹了關(guān)于如何利用selenium爬蟲抓取數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用selenium具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-06-06Windows 下python3.8環(huán)境安裝教程圖文詳解
這篇文章主要介紹了Windows 下python3.8環(huán)境安裝教程圖文詳解,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-03-03淺談pytorch卷積核大小的設(shè)置對全連接神經(jīng)元的影響
今天小編就為大家分享一篇淺談pytorch卷積核大小的設(shè)置對全連接神經(jīng)元的影響,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01