Base64是一种很常用的编码方式,利用它可以将任何二进制的字符编码到可打印的64个字符之中, 这样,不管是图片,中文文本等都可以编码成只有ASCII的纯文本。
BASE64可以用来将binary的字节序列数据编码成ASCII字符序列构成的文本。完整的BASE64定义可见 RFC1421和 RFC2045。编码后的数据比原始数据略长,为原来的4/3。在电子邮件中,根据RFC822规定,每76个字符,还需要加上一个回车换行。
转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。数据不足3byte的话,于缓冲区中剩下的Bit用0补足。然后,每次取出6个bit,按照其值选择ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/中的字符作为编码后的输出。不断进行,直到全部输入数据转换完成。如果最后剩下两个输入数据,在编码结果后加1个“=”;如果最后剩下一个输入数据,编码结果后加2个“=”;如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。
BASE64_API.h 文件内容
- /* ---------------------------------------------------------- 文件名称:BASE64_API.h
- 作者:秦建辉
- MSN:splashcn@msn.com
- 当前版本:V1.1
- 历史版本:
- V1.1 2010年05月11日 修正BASE64解码的Bug。
- V1.0 2010年05月07日
- 完成正式版本。
- 功能描述: BASE64编码和解码
- 接口函数:
- Base64_Encode Base64_Decode
- 说明:
- 1. 参考openssl-1.0.0。 2. 改进接口,以使其适应TCHAR字符串。
- 3. 修正EVP_DecodeBlock函数解码时未去掉填充字节的缺陷。 ------------------------------------------------------------ */
- #pragma once #include "stdafx.h"
- #include <windows.h>
- #ifdef __cplusplus
- extern "C" { #endif
- /*
- 功能:将二进制数据转换成BASE64编码字符串 参数说明:
- inputBuffer:要编码的二进制数据 inputCount:数据长度
- outputBuffer:存储转换后的BASE64编码字符串 返回值:










