Base64 编码与解码

  今天做webService,xml数据先通过Base64编码再推送出去,其主要目的不是加密,而是把一些二进制数转成普通字符用于网络传输。由于一些二进制字符在传输协议中属于控制字符,不能直接传送需要转换一下。  

  Base64编码是通过64个基本ASCII码字符对数据进行重新编码,由于2的6次方等于64,所以每6个位元为一个单元,对应某个可打印字符。三个字节有24个位元,对应于4个Base64单元,即3个字节需要用4个可打印字符来表示。编码后的数据比原始数据略长,为原来的4/3。转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6(因为2^6=64)个bit,按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作为编码后的输出。不断进行,直到全部输入数据转换完成。如果最后剩下两个输入数据,在编码结果后加1个“=”;如果最后剩下一个输入数据,编码结果后加2个“=”;如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。

  java Base64编码:

BASE64Encoder encoder=new BASE64Encode();
encoder.encode(pxml)

  java Base64解码:

BASE64Decoder decoder = new BASE64Decoder();
byte[] rxmlByte=decoder.decodeBuffer(rxml);
rxml=new String(rxmlByte,"utf-8");//那个xmk可能有中文,所以制定编码方式
return rxml;

  



 

posted @ 2013-02-28 23:50  初水平  阅读(235)  评论(0)    收藏  举报