1. 程式人生 > >C# 郵件的Base64 編碼介紹

C# 郵件的Base64 編碼介紹

郵件一般採用 Base64 編碼:

1、Base64 編碼編碼介紹

Base64要求把每三個8Bit的位元組轉換為四個6Bit的位元組(3*8 = 4*6 = 24),然後把6Bit再添兩位高位0,組成四個8Bit的位元組,也就是說,轉換後的字串理論上將要比原來的長1/3。當所要編碼的資料的位元組數不是3的整倍數,也就是說在分組時最後一組不夠3個位元組。這時在最後一組填充1到2個0位元組。並在最後編碼完成後在結尾新增1到2個 “=”。 BASE64字元表:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
編碼的規則:
①.把3個字元變成4個字元。 ②每76個字元加一個換行符。 ③.最後的結束符也要處理。 例:

1、ABC組合對應的ASCII碼值:A(65)B(66)C(67)。
2、轉化成二進位制:A(01000001)B(01000010)C(01000011),組合在一起為:(010000010100001001000011)。
 3、 將組合均勻分成四份,並在沒份的前面新增鏈兩個0,組合成符合Base64 的四個位元組,(00010000)(00010100)(00001001)(00000011),其中紅色部分為原始資料。
 4、將四個位元組資料轉化成10進位制數得16、20、9、3,然後根據Base64 字元表 查找出對應的ASCII碼字元Q、U、J、D。“QUJD” 就是ABC進行 Base64 轉化後的結果。


5、關於餘數 (= 原文位元組數 MOD 3)不等於0:如果是1的話,為了讓Base64編碼是3的倍數,就要補2個等號;同理,如果是2的話,就要補1個等號。例:將A 進行Base64編碼:不足三個位元組(01000001)轉化後(00010000,0001),將位元組位數不夠的用0 補全,空缺的位元組用“=”填補(00010000,00010000,=,=)。轉換後的Base64 碼為:“QQ==”。

 Base64 字元表:
索引 對應字元 索引 對應字元 索引 對應字元 索引 對應字元
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

2、Base64 編碼 程式實現:

C#自帶 Base64 編碼 加密和解密的方法: 加密: System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(sourceString));
解密:需要引數Base64String為base-64編碼格式,如果不是,將丟擲異常。 System.Text.Encoding.Default.GetString(System.Convert.FromBase64String(Base64String));