九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Base64 編碼原理
Base64是一種使用64基的位置計數(shù)法。它使用2的最大次方來代表僅可打印的ASCII 字符。這使它可用來作為電子郵件的傳輸編碼。在Base64中的變量使用字符A-Z、a-z和0-9 ,這樣共有62個字符,用來作為開始的64個數(shù)字,最后兩個用來作為數(shù)字的符號在不同的系統(tǒng)中而不同。一些如uuencode的其他編碼方法,和之后binhex的版本使用不同的64字符集來代表6個二進(jìn)制數(shù)字,但是它們不叫Base64。
 

MIME格式的電子郵件中,base64可以用來將binary的字節(jié)序列數(shù)據(jù)編碼成ASCII字符序列構(gòu)成的文本。使用時,在傳輸編碼方式中指定base64。使用的字符包括大小寫字母各26個,加上10個數(shù)字,和加號“+”,斜杠“/”,一共64個字符,等號“=”用來作為后綴用途。

完整的base64定義可見 RFC 1421RFC 2045。編碼后的數(shù)據(jù)比原始數(shù)據(jù)略長,為原來的

。在電子郵件中,根據(jù)RFC 822規(guī)定,每76個字符,還需要加上一個回車換行??梢怨浪憔幋a后數(shù)據(jù)長度大約為原長的135.1%。

轉(zhuǎn)換的時候,將三個byte的數(shù)據(jù),先后放入一個24bit的緩沖區(qū)中,先來的byte占高位。數(shù)據(jù)不足3byte的話,于緩沖區(qū)中剩下的bit用0補足。然后,每次取出6(因為26 = 64)個bit,按照其值選擇ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作為編碼后的輸出。不斷進(jìn)行,直到全部輸入數(shù)據(jù)轉(zhuǎn)換完成。

如果最后剩下兩個輸入數(shù)據(jù),在編碼結(jié)果后加1個“=”;如果最后剩下一個輸入數(shù)據(jù),編碼結(jié)果后加2個“=”;如果沒有剩下任何數(shù)據(jù),就什么都不要加,這樣才可以保證資料還原的正確性。

舉例來說,一段引用自托馬斯·霍布斯利維坦的文句:

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.

經(jīng)過base64編碼之后變成:

TWFuIGlzIGRpc3Rpbmd1aXNoZWQsIG5vdCBvbmx5IGJ5IGhpcyByZWFzb24sIGJ1dCBieSB0aGlzIHNpbmd1bGFyIHBhc3Npb24gZnJvbSBvdGhlciBhbmltYWxzLCB3aGljaCBpcyBhIGx1c3Qgb2YgdGhlIG1pbmQsIHRoYXQgYnkgYSBwZXJzZXZlcmFuY2Ugb2YgZGVsaWdodCBpbiB0aGUgY29udGludWVkIGFuZCBpbmRlZmF0aWdhYmxlIGdlbmVyYXRpb24gb2Yga25vd2xlZGdlLCBleGNlZWRzIHRoZSBzaG9ydCB2ZWhlbWVuY2Ugb2YgYW55IGNhcm5hbCBwbGVhc3VyZS4=

[編輯] 例子

  • 編碼“Man”
文本Man
ASCII編碼7797110
二進(jìn)制位010011010110000101101110
索引1922546
Base64編碼TWFu

在此例中,Base64算法將三個字符編碼為4個字符

Base64索引表:

ValueChar ValueChar ValueChar ValueChar
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

[編輯] UTF-7

UTF-7 是一個修改的Base64(Modified Base64)。主要是將UTF-16的數(shù)據(jù),用Base64的方法編碼為可打印的 ASCII 字符序列。目的是傳輸 Unicode 數(shù)據(jù)。主要的區(qū)別在于不用等號"="補余,因為該字符通常需要大量的轉(zhuǎn)譯。

標(biāo)準(zhǔn)可見RFC 2152,《A Mail-Safe Transformation Format of Unicode》。

[編輯] IRCu

IRCu等軟件所使用的P10 IRC服務(wù)器間協(xié)議中,對客戶與服務(wù)器的消息類型號(client/server numerics)和二進(jìn)制IP地址采用了base64編碼。消息類型號的長度固定為3字節(jié),故可直接編碼為4個字節(jié)而不需要加填充。對IP地址進(jìn)行編碼時,則需要在地址前添加一些0比特,使之可以編碼為整數(shù)個字節(jié)。這里所用的符號集與前述MIME的也有所不同,將+/改成了[]。

[編輯] 在URL中的應(yīng)用

Base64編碼可用于在HTTP環(huán)境下傳遞較長的標(biāo)識信息。例如,在Java持久化系統(tǒng)Hibernate中,就采用了Base64來將一個較長的唯一標(biāo)識符(一般為128-bit的UUID)編碼為一個字符串,用作HTTP表單和HTTP GET URL中的參數(shù)。在其他應(yīng)用程序中,也常常需要把二進(jìn)制數(shù)據(jù)編碼為適合放在URL(包括隱藏表單域)中的形式。此時,采用Base64編碼不僅比較簡短,同時也具有不可讀性,即所編碼的數(shù)據(jù)不會被人用肉眼所直接看到。

然而,標(biāo)準(zhǔn)的Base64并不適合直接放在URL里傳輸,因為URL編碼器會把標(biāo)準(zhǔn)Base64中的“/”和“+”字符變?yōu)樾稳纭?XX”的形式,而這些“%”號在存入數(shù)據(jù)庫時還需要再進(jìn)行轉(zhuǎn)換,因為ANSI SQL中已將“%”號用作通配符。

為解決此問題,可采用一種用于URL的改進(jìn)Base64編碼,它不在末尾填充'='號,并將標(biāo)準(zhǔn)Base64中的“+”和“/”分別改成了“*”和“-”,這樣就免去了在URL編解碼和數(shù)據(jù)庫存儲時所要作的轉(zhuǎn)換,避免了編碼信息長度在此過程中的增加,并統(tǒng)一了數(shù)據(jù)庫、表單等處對象標(biāo)識符的格式。

另有一種用于正則表達(dá)式的改進(jìn)Base64變種,它將“+”和“/”改成了“!”和“-”,因為“+”,“*”以及前面在IRCu中用到的“[”和“]”在正則表達(dá)式中都可能具有特殊含義。

此外還有一些變種,它們將“+/”改為“_-”或“._”(用作編程語言中的標(biāo)識符名稱)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。

其他應(yīng)用

  • Mozilla ThunderbirdEvolution用Base64來保密電子郵件密碼
  • Base64 也會經(jīng)常用作一個簡單的“加密”來保護(hù)某些數(shù)據(jù),而真正的加密通常都比較繁瑣。
  • 垃圾訊息傳播者用Base64來避過反垃圾郵件工具,因為那些工具通常都不會翻譯Base64的訊息。
  • LDIF檔案,Base64用作編碼字串。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Base64編碼
Java數(shù)據(jù)類型以及基本概念詳解(圖文并茂)
從零開始學(xué)Java(六)Java八種基本數(shù)據(jù)類型詳解
淺談Base64編碼
Bit,Byte,WORD,DWORD區(qū)別和聯(lián)系
五、計算機(jī)中的數(shù)據(jù)和編碼講義
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服