Base64編碼解碼原理詳解

2021-07-31 21:31:14 字數 1889 閱讀 5476

1. base64字元的組成部分

base64所用字元: 0,1,2 ….9 a,b,c,d…z a,b,c,d…z + /

對應ascii: 48,49…58,65,66…90,97,98…122, 43,47

2. 10個數字,26個大寫字母,26個小寫字母,1個+,乙個 / 剛好64個字元

3. base64是將每3個字元轉化為4個字元,即(3*8bit=4*6bit),如果文字結尾不足3個字元,後面剩餘的二進位制位可能是2位或者4位(因為是n%6),餘數為0時代表整除了,在剩餘二進位制位後面補0至6個二進位制位,再在結尾加=號,使編碼後的字元滿足(n*8+等號個數)/6=base64的字元個數,說白了,如果n*8%6後余2個二進位制位,就補2個=,餘4個二進位制位就補乙個=,整除不補=。

4. base64編碼對應的字元表

5. 對字元個數是3的倍數(n*8%6=0)的字串進行base64編碼

原文:         p           h         p

對應ascii: 01110000 01101000 01110000

每6位分割: 011100 000110 100001 110000 |

對應10進製值: 28 6 33 48

base64對應的字元:c g h w

最後php=cghw(base64)

6. 對字元個數為n*8%6=2的字串進行base64編碼
原文:        r        a         n       l 

ascii值:01110010

01100001

01101110

01101100

每6位分割:011100

100110

000101

101110 | 011011

000000 ****** ****** |

對應10進製值:28385

4627

0 = =

對應base64字元: c m f u b a = =

結果: ranl=cmfuba==(base64)

7. 對字元個數為n*8%6=4的字串進行base64編碼
原文           h          a         c         k          e

ascii值: 01101000

01100001

01100011

01101011

01100101

每6位分割: 011010

000110

000101

100011 | 011010

110110

0101

00 ****** |

對應10進製值: 2665

3526

5420 =

對應base64字元: a g f j a

2 u =

結果 hacke=agfja2u=(base64)

8. base64對於中文的不同編碼可能會出現不同的結果,具體要看中文用的是什麼編碼。

9. 總結,看懂了base64的編碼過程,當前解碼的過程也就明白了,在這兒我就不多講了

Base64編碼解碼原理

一.base64編碼由來 為什麼會有base64編碼呢?因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議...

Base64編碼與解碼原理

base64編碼是使用64個可列印ascii字元 a z a z 0 9 將任意位元組序列資料編碼成ascii字串,另有 符號用作字尾用途。base64編碼與解碼的基礎索引表如下 1 base64編碼過程 base64將輸入字串按位元組切分,取得每個位元組對應的二進位制值 若不足8位元則高位補0 然...

base64編碼 解碼

ps base64是一種資料編碼方式,目的是讓資料符合傳輸協議的要求,有些人誤用它進行資料加密 base64編碼 nsstring base64encodedstringwithstring nsstring string base64解碼 nsstring base64decodedstringw...