boost库实现Base64编解码

来源:互联网 发布:mac系统偏好设置有个1 编辑:程序博客网 时间:2024/06/05 14:42

Base64介绍

Base64是一种基于64个可打印字符来表示二进制数据的表示方法,从本质上看Base64编码就是将三字节转换为四字节,如果数据的长度不是3的整数倍,就要在后面补0再计算,每补20就再Base64串后加上1个‘=’。

boost库Base64

boost库对Base64编解码进行很了很好的封装,以下代码用boost库实现Base64编解码

//boost库引用文件#include <boost/archive/iterators/base64_from_binary.hpp>#include <boost/archive/iterators/binary_from_base64.hpp>#include <boost/archive/iterators/transform_width.hpp>//标准库#include <iostream>#include <string>#include <sstream>using namespace std;using namespace boost::archive::iterators;//Base64编码bool Base64Encode(string * outPut, const string & inPut);//Base64解码bool Base64Decode(string * outPut, const string & inPut);int main(void){cout<<"***************************************"<<endl;cout<<"*       boost库Base64编码解码         *"<<endl;cout<<"***************************************"<<endl;string inputstr = "http://blog.csdn.net/nk_wang/article/details/44536269/\n#@$%^^&**(*(())+=";//Base64编码string Output;string Input;cout<<"Base64编码前:"<<inputstr<<endl;Base64Encode(&Output,inputstr);cout<<"Base64编码后:"<<Output<<endl;//Base64解码cout<<"Base64解码前:"<<Output<<endl;Base64Decode(&Input,Output);cout<<"Base64解码后:"<<Input<<endl;return 0;}bool Base64Encode(string * outPut, const string & inPut){typedef base64_from_binary<transform_width<string::const_iterator,6,8>> Base64EncodeIter; stringstream  result;copy(Base64EncodeIter(inPut.begin()),Base64EncodeIter(inPut.end()),ostream_iterator<char>(result));size_t Num = (3 - inPut.length() % 3) % 3;for (size_t i = 0; i < Num; i++){result.put('=');}*outPut = result.str();return outPut->empty() == false;}bool Base64Decode(string * outPut, const string & inPut){typedef transform_width<binary_from_base64<string::const_iterator>,8,6> Base64DecodeIter;stringstream result;try{copy(Base64DecodeIter(inPut.begin()),Base64DecodeIter(inPut.end()),ostream_iterator<char>(result));}catch (...){return false;}*outPut = result.str();return outPut->empty() == false;}

以上代码是实结果如下图所示


2 0