2008年6月16日 星期一

Base64 編碼簡介 和 C#操作方法

Base64 編碼簡介

Base64
是一種使用64基的位置計數法。它使用2的最大次方來代表僅可列印的ASCII字元。這使它可用來作為電子郵件的傳輸編碼。在Base64中的變數使用字元A-Z、a-z和0-9 ,這樣共有62個字元,用來作為開始的64個數字,最後兩個用來作為數字的符號在不同的系統中而不同。一些如UUENCODE的其他編碼方法,和之後binhex的版本使用不同的64字元集來代表6個二進位數字,但是它們不叫Base64。

轉換的時候,將三個byte的數據,先後放入一個24bit的緩衝區中,先來的byte占高位。數據不足3byte的話,於緩衝區中剩下的Bit用0補足。然後,每次取出6個bit,按照其值選擇ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字元作為編碼後的輸出。不斷進行,直到全部輸入數據轉換完成。

如果最後剩下兩個輸入數據,在編碼結果後加1個「=」;如果最後剩下一個輸入數據,編碼結果後加2個「=」;如果沒有剩下任何數據,就什麼都不要加,這樣才可以保證資料還原的正確性。

C#使用base64編碼的範例方法
什麼是base64編碼之前已經寫過了所以不再贅述 今天剛好在研究xuite保護其flv的方法 發現它用了很多base64的編碼來轉換網址等資訊
所以寫了一個簡單的base64轉明文的小工具 寫法如下


//64進位編碼轉成明文

private void button1_Click(object sender, EventArgs e)

{

textBox_string.Text= Encoding.Default.GetString (Convert.FromBase64String(textBox_base64.Text));

}

//明文轉成64進位編碼

private void button2_Click(object sender, EventArgs e)

{

textBox_base64.Text= Convert.ToBase64String(Encoding.Default.GetBytes(textBox_string.Text));

}



2010/01/01 Add
base64線上轉換工具
base64線上轉換工具程式碼(Python)