BASE64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。完整的BASE64定义可见 RFC1421和 RFC2045。编码后的数据比原始数据略长,为原来的4/3。在电子邮件中,根据RFC822规定,每76个字符,还需要加上一个回车换行。
转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。数据不足3byte的话,于缓冲区中剩下的Bit用0补足。然后,每次取出6个bit,按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作为编码后的输出。不断进行,直到全部输入数据转换完成。如果最后剩下两个输入数据,在编码结果后加1个“=”;如果最后剩下一个输入数据,编码结果后加2个“=”;如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。
开发语言:C/C++
实现功能:实现BASE64编码和解码,提供如下接口函数:
BASE64_Encode
BASE64_Decode
下载地址:
V1.1 2010年05月11日
修正BASE64解码的Bug。V1.0 2010年05月07日
完成正式版本。
附加说明:
-
参考openssl-1.0.0。
-
改进接口,以使其适应TCHAR字符串。
-
修正EVP_DecodeBlock函数解码时未去掉填充字节的缺陷。
BASE64_API.h:
BASE64_API.cpp: