Base64轉換原理

2021-10-06 01:51:36 字數 2572 閱讀 5366

base64是網路上最常見的用於傳輸8bit位元組碼的編碼方式之一,base64就是一種基於64個可列印字元來表示二進位制資料的方法。

採用a-z、a-z、0-9、「+」、「/」 再加乙個=做為補充符號,總共65個可顯示字元。

從原來的24位變成32位 ,base64轉換後的字元長度比原來大三分之一左右

1、每3個位元組分為一組,總共24個二進位制位

2、將這24個二進位制位分成四份,每份6個二進位制位

3、在每份前面加上兩個00,變成32個二進位制位,即4個位元組

將這四個位元組的每乙個位元組轉換成十進位制,轉換後的十進位制即對應base64 碼表中的下標。aa

bbcc

ddee

ffgg

hhii

jjkk

llmm

nnoo

ppqq

rrss

ttuu

vvww

xxyy

zz例如:wangbl

w 對應的ascii值十進位制為87,二進位制為:0101 0111

a  對應的ascii值十進位制為97,二進位制為:0110 0001

n  對應的ascii值十進位制為110,二進位制為:0110 1110

g  對應的ascii值十進位制為103,二進位制為:0110 0111

b  對應的ascii值十進位制為98,二進位制為: 0110 0010

l   對應的ascii值十進位制為1083,二進位制為:0110 1100

將wangbl 每三個位元組分成一組,總共分成兩組

一、先對第一組wan進行轉換

1、將01010111、01100001、01101110這24位每6位分成一組,總共被分為4組

2、分成4組後的二進位制為010101、110110、000101、101110

3、然後在4組的二進位制前面加兩個0後變為00010101、00110110、00000101、00101110

4、轉換成十進位制為21、54、5、46,對應上面的base64碼表得到v2fu

二、將第二組gbl進行轉換

1、將0110 0111、0110 0010、0110 1100這24位每6位分成一組,總共被分為4組

2、分成4組後的二進位制為011001、110110、001001、101100

3、然後在這4組的二進位制前面補兩個0,結果為00011001、00110110、00001001、00101100

4、轉換成十進位制為25、54、9、44,對應上面的base64碼表得到z2js

最終wangbl用base64加密之後的字元為v2fuz2js

如果在分成的組不滿3個位元組的情況。分為兩種情況:一種是分組後其中一組只有兩個位元組;另外一種情況是分組後其中一組只有乙個位元組。下面分別舉例說明

例如wangb,每3個位元組分成一組之後,得到的兩組為wan,gb,其中第二組gb只有兩個位元組

一、先對第一組wan進行轉換

1、將01010111、01100001、01101110這24位每6位分成一組,總共被分為4組

2、分成4組後的二進位制為010101、110110、000101、101110

3、然後在4組的二進位制前面加兩個0後變為00010101、00110110、00000101、00101110

4、轉換成十進位制為21、54、5、46,對應上面的base64碼表得到v2fu

二、對第二組gb進行轉換

1、將0110 0111、0110 0010這16位每6位分成一組,總共分成3組

2、分成3組後的二進位制為011001、110110、0010,最後一組前面補兩個0,後面也要補兩個0

3、補0後得到的24位二進位制為00011001、00110110、00001000

4、將這24位二進位制轉換成十進位制結果為25、54、8,對應上面的base64碼表得到z2i

5、最後一位補上乙個」=「,得到的字元為z2i=

wangb最終用base64加密後的字元為v2fuz2i=

例如wang,每3個位元組分成一組之後,得到的兩組為wan,g,其中第二組g只有乙個位元組

一、先對第一組wan進行轉換

1、將01010111、01100001、01101110這24位每6位分成一組,總共被分為4組

2、分成4組後的二進位制為010101、110110、000101、101110

3、然後在4組的二進位制前面加兩個0後變為00010101、00110110、00000101、00101110

4、轉換成十進位制為21、54、5、46,對應上面的base64碼表得到v2fu

二、對第二組g進行轉換

由於g只有乙個位元組,按照規則每6位分成一組,總共得到兩組,在末尾補上兩個」=「號

1、將0110 0111這8位每6位分成一組,總共被分為兩組

2、分成2組後的二進位制為011001、11

3、每組前面補兩個0,最後一組後面補四個0,得到的結果為00011001、00110000

4、將步驟3中得到的結果轉換成十進位制結果為:25、48,對應上面的base64碼表為zw

5、在末尾補上兩個」=「,結果為zw==

最終wang通過base64加密之後結果為v2fuzw==

由於知識涉及的比較繁瑣,需要自己手動多轉換幾次,方便理解。

物件base64轉碼 Base64編碼轉換

1 為什麼mime要有編碼轉換 在mime總結這篇經驗中,總結了mime相較於rfc 822的擴充套件功能,其中提到了rfc 822的缺陷 非英語字元都不能在電子郵件中使用 2 電子郵件中不能插入二進位制檔案 如 3 電子郵件不能有附件。能夠對文字進行簡單的加密 2 quoted printable...

Base64編碼轉換原理

原文 base64編碼轉換原理 c語言 base64是一種加密方法。它的特點是 1 速度非常快。2 能夠將字串a轉換成字串b,而且如果你光看字串b,是猜不出字串a的內容來的。base64編碼其實是將3個8位位元組轉換為4個6位位元組,3 8 4 6 24 這4個六位位元組其實仍然是8位,只不過高兩位...

Delphi版的Base64轉換函式(修改版)

前幾天,興趣所致,寫了2個delphi版的base64轉換函式,見 delphi版的base64轉換函式 一文。後來覺得這些函式使用不夠靈活,所以重新寫了幾個放在這裡,核心的轉換 用ba 寫的 不知是否快一點,不過,我覺得用彙編寫這種 好像比pascal還容易些,因為有些二進位制操作,高階語言不方便...