當前位置:首頁站長工具Base64在線加密/解密(Base64編碼)

Base64加密 Base64解密 Base64編碼

Base64在線加密/解密

請把你需要加密的內容粘貼在下面的文本域中!點擊相應按鈕進行加密或解密。

          

什么是Base64編碼?Base64有什么作用?Base64加密/解密原理?  (查看全文
  什么是Base64編碼?
  按照RFC2045的定義,Base64被定義為:Base64內容傳送編碼被設計用來把任意序列的8位字節描述為一種不易被人直接識別的形式。Base64是網絡上最常見的用于傳輸8Bit字節代碼的編碼方式之一,大家可以查看RFC2045~RFC2049,上面有MIME的詳細規范。
  Base64有什么作用?
  Base64編碼可用于在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就采用了Base64來將一個較長的唯一標識符(一般為128-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,采用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
  Base64在URL中的應用
  標準的Base64并不適合直接放在URL里傳輸,因為URL編碼器會把標準Base64中的"/"和"+"字符變為形如"%XX"的形式,而這些"%"號在存入數據庫時還需要再進行轉換,因為ANSI SQL中已將"%"號用作通配符。
  為解決此問題,可采用一種用于URL的改進Base64編碼,它不在末尾填充'='號,并將標準Base64中的"+"和"/"分別改成了"*"和"-",這樣就免去了在URL編解碼和數據庫存儲時所要作的轉換,避免了編碼信息長度在此過程中的增加,并統一了數據庫、表單等處對象標識符的格式。
  另有一種用于正則表達式的改進Base64變種,它將"+"和"/"改成了"!"和"-",因為"+","*"以及前面在IRCu中用到的"["和"]"在正則表達式中都可能具有特殊含義。
  此外還有一些變種,它們將"+/"改為"_-"或"._"(用作編程語言中的標識符名稱)或".-"(用于XML中的Nmtoken)甚至"_:"(用于XML中的Name)。
  用Base64加密/解密下載地址的原理
  先以“迅雷下載”為例:
  很多下載類網站都提供“迅雷下載”的鏈接,其地址通常是加密的迅雷專用下載地址。
  如thunder://QUFodHRwOi8vd3d3LmJhaWR1LmNvbS9pbWcvc3NsbTFfbG9nby5naWZaWg==
  其實迅雷的“專用地址”也是用Base64加密的,其加密過程如下:
  一、在地址的前后分別添加AA和ZZ
    如www.baidu.com/img/sslm1_logo.gif變成AAwww.baidu.com/img/sslm1_logo.gifZZ
  二、對新的字符串進行Base64編碼
    如AAwww.baidu.com/img/sslm1_logo.gifZZ用Base64編碼得到:
    QUF3d3cuYmFpZHUuY29tL2ltZy9zc2xtMV9sb2dvLmdpZlpa
  三、在上面得到的字符串前加上“thunder://”就成了:
    thunder://QUF3d3cuYmFpZHUuY29tL2ltZy9zc2xtMV9sb2dvLmdpZlpa
  另:Flashget的與迅雷類似,只不過在第一步時加的“料”不同罷了,Flashget在地址前后加的“料”是[FLASHGET];而QQ旋風的干脆不加料,直接就對地址進行Base64編碼了。
  Base64在電子郵件中的應用
  在MIME格式的電子郵件中,base64可以用來將binary的字節序列數據編碼成ASCII字符序列構成的文本。使用時,在傳輸編碼方式中指定base64。使用的字符包括大小寫字母各26個,加上10個數字,和加號“+”,斜杠“/”,一共64個字符,等號“=”用來作為后綴用途。
  完整的base64定義可見 RFC1421和 RFC2045。編碼后的數據比原始數據略長,為原來的4/3。在電子郵件中,根據RFC822規定,每76個字符,還需要加上一個回車換行。可以估算編碼后數據長度大約為原長的135.1%。
  轉換的時候,將三個byte的數據,先后放入一個24bit的緩沖區中,先來的byte占高位。數據不足3byte的話,于緩沖區中剩下的Bit用0補足。然后,每次取出6個bit,按照其值選擇ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作為編碼后的輸出。不斷進行,直到全部輸入數據轉換完成。
  如果最后剩下兩個輸入數據,在編碼結果后加1個“=”;如果最后剩下一個輸入數據,編碼結果后加2個“=”;如果沒有剩下任何數據,就什么都不要加,這樣才可以保證資料還原的正確性。
  舉例來說,一段引用自Thomas Hobbes's Leviathan的文句:
    Man is distinguished, not only by his reason, but by this singular passion from other animals, which is a lust of the mind, that by a perseverance of delight in the continued and indefatigable generation of knowledge, exceeds the short vehemence of any carnal pleasure.
  經過base64編碼之后變成:
  TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlz
  IHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2Yg
  dGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGlu
  dWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRo
  ZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=
  Base64的編碼規則(算法)
  Base64要求把每三個8Bit的字節轉換為四個6Bit的字節(3*8 = 4*6 = 24),然后把6Bit再添兩位高位0,組成四個8Bit的字節,也就是說,轉換后的字符串理論上將要比原來的長1/3。
  ①.把3個字符變成4個字符...
  ②.每76個字符加一個換行符...
  ③.最后的結束符也要處理...
  這樣說會不會太抽象了?不怕,我們來看一個例子:
  轉換前 aaaaaabb ccccdddd eeffffff
  轉換后 00aaaaaa 00bbcccc 00ddddee 00ffffff
  應該很清楚了吧?上面的三個字節是原文,下面的四個字節是轉換后的Base64編碼,其前兩位均為0。
  轉換后,我們用一個碼表來得到我們想要的字符串(也就是最終的Base64編碼),這個表是這樣的:(摘自RFC2045)
索引 對應字符 索引 對應字符 索引 對應字符 索引 對應字符
0A17R34i51z
1B18S35j520
2C19T36k531
3D20U37l542
4E21V38m553
5F22W39n564
6G23X40o575
7H24Y41p586
8I25Z42q597
9J26a43r608
10K27b44s619
11L28c45t62+
12M29d46u63/
13N30e47v  
14O31f48w  
15P32g49x  
16Q33h50y  
[TOP]
本站部分內容收集整理于網絡,如有問題請隨時聯系站長點擊這里給我發消息,本站將在第一時間內進行處理!
設為首頁   收藏本站   友情鏈接   蜀ICP備08103254號-1  川公網安備51140202000211號  最佳瀏覽環境:IE7.0及以上 1024px×768px
   騰訊分析  
四川快乐12走势