[b]1. Base64[/b]
每6个bit位在高位添2个0形成一个可读的8位,这样3个原始8位变成4个编码8位, 3*8 = 4*6
编码后的8位值从0-63依次映射为大小写字母52个,数字10个,然后 [b]+[/b] 和 [b]/[/b]共64个字符.
如果原始字符数不是3的倍数,用值0字节填充,用字符[b]=[/b]的个数表示填充的值0字节数。
其它可选编码:
[b]chunk:[/b] 每76个编码后字符串加一个CRLF换行符。
[b]URL:[/b] 由于标准字符映射表中[b]+[/b]和[b]/[/b]是URL中的关键字,一般将其替换成其它非关键字,如commons-codec将其替换成[b]-[/b]和[b]_[/b]。
参考:
RFC: [url]http://www.ietf.org/rfc/rfc2045.txt[/url]
6.8. Base64 Content-Transfer-Encoding
百科名片: [url]http://baike.baidu.com/view/469071.htm[/url]
算法实现:
commons-codec: [url]http://commons.apache.org/codec/index.html[/url]
Sun JDK: sun.misc.BASE64Encoder & sun.misc.BASE64Decoder
每6个bit位在高位添2个0形成一个可读的8位,这样3个原始8位变成4个编码8位, 3*8 = 4*6
编码后的8位值从0-63依次映射为大小写字母52个,数字10个,然后 [b]+[/b] 和 [b]/[/b]共64个字符.
如果原始字符数不是3的倍数,用值0字节填充,用字符[b]=[/b]的个数表示填充的值0字节数。
其它可选编码:
[b]chunk:[/b] 每76个编码后字符串加一个CRLF换行符。
[b]URL:[/b] 由于标准字符映射表中[b]+[/b]和[b]/[/b]是URL中的关键字,一般将其替换成其它非关键字,如commons-codec将其替换成[b]-[/b]和[b]_[/b]。
参考:
RFC: [url]http://www.ietf.org/rfc/rfc2045.txt[/url]
6.8. Base64 Content-Transfer-Encoding
百科名片: [url]http://baike.baidu.com/view/469071.htm[/url]
算法实现:
commons-codec: [url]http://commons.apache.org/codec/index.html[/url]
Sun JDK: sun.misc.BASE64Encoder & sun.misc.BASE64Decoder