Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)

原创 2013年10月29日 10:34:09

本文地址:http://blog.csdn.net/morewindows/article/details/11922643转载请标明出处,谢谢。

欢迎关注微博:http://weibo.com/MoreWindows   

 

本系列一共四篇:

1. Base64系列第一篇 Base64介绍

2. Base64系列第二篇 python中使用Base64编码解码

3. Base64系列第三篇 C/C++中使用Base64编码解码(使用boost)

4. Base64系列第四篇 C/C++中使用Base64编码解码(chromium库中抽取)

本篇《Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)》将从大名鼎鼎的chromium库抽取代码,保证健壮高效的完成Base64编码解码。

 

核心代码展示(完整代码下载地址(免积分):http://download.csdn.net/download/morewindows/6423847

base64.h

#include "./modp_base64/modp_b64.h"

// Encodes the input string in base64.  Returns true if successful and false
// otherwise.  The output string is only modified if successful.
bool Base64Encode(const std::string& input, std::string* output);

// Decodes the base64 input string.  Returns true if successful and false
// otherwise.  The output string is only modified if successful.
bool Base64Decode(const std::string& input, std::string* output);

base64.cpp

#include "./base64.h"
#include <string.h>

bool Base64Encode(const std::string& input, std::string* output) {
  std::string temp;
  temp.resize(modp_b64_encode_len(input.size()));  // makes room for null byte

  // null terminates result since result is base64 text!
  int input_size = static_cast<int>(input.size());
  int output_size= modp_b64_encode(&(temp[0]), input.data(), input_size);
  if (output_size < 0)
    return false;

  temp.resize(output_size);  // strips off null byte
  output->swap(temp);
  return true;
}

bool Base64Decode(const std::string& input, std::string* output) {
  std::string temp;
  temp.resize(modp_b64_decode_len(input.size()));

  // does not null terminate result since result is binary data!
  int input_size = static_cast<int>(input.size());
  int output_size = modp_b64_decode(&(temp[0]), input.data(), input_size);
  if (output_size < 0)
    return false;

  temp.resize(output_size);
  output->swap(temp);
  return true;
}

测试代码:

//  Base64系列第四篇C/C++中使用Base64编码解码(从chromium库中抽取)
//  by MoreWindows( http://blog.csdn.net/MoreWindows )   
//  欢迎关注http://weibo.com/morewindows  
#include "./base64.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
  cout<<"    Base64系列第四篇C/C++中使用Base64编码解码(从chromium库中抽取)"<<endl;
  cout<<"  -- by MoreWindows( http://blog.csdn.net/MoreWindows ) --"<<endl;
  cout<<" - http://blog.csdn.net/morewindows/article/details/11922519 -\n"<<endl;

  string input_str("MoreWindows - http://blog.csdn.net/morewindows?viewmode=contents ~!@#$%\r\n\t0123456789");
  string base64_str, output_str;

  cout<<"origin text: \n"<<input_str<<endl;

  Base64Encode(input_str, &base64_str);
  cout<<"encode: \n"<<base64_str<<endl;

  Base64Decode(base64_str, &output_str);
  cout<<"decode: \n"<<output_str<<endl;
  return 0;
}

运行结果如下:

 

 

Base64编码解码系列就到此结束了,相信大家不但能从原理上理解,还能以python,C/C++来实现^_^。


 

 

本文地址:http://blog.csdn.net/morewindows/article/details/11922643转载请标明出处,谢谢。

欢迎关注微博:http://weibo.com/MoreWindows   

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

C++进行base64编码和解码

cpp 文件 base64.cpp #include "base64.h" #include static const std::string base64_chars = ...
  • sky04
  • sky04
  • 2011年10月17日 16:09
  • 29489

Base64加密解密算法的C/C++代码实现

// 头文件 base64.h #ifndef BASE64_H #define BASE64_H const char base[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZa...

Base64系列第三篇 C/C++中使用Base64编码解码(使用boost库)

本篇《Base64系列第三篇 C/C++中使用Base64编码解码(使用boost库)》将介绍如何使用boost库来完成Base64的编码解码 由于boost库良好的封装,所以使用boost来完成Ba...

Base64编解码(C++版)

转自:http://www.cnblogs.com/phinecos/archive/2008/10/10/1308272.html

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

C++实现BASE64码编解码

原文:http://blog.csdn.net/chenxiaohua/archive/2009/04/16/4084602.aspx     #ifndef ___BASE64_H___ #defi...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

用OpenSSL 做Base64 编解码(C++)

参考: http://www.ioncannon.net/programming/34/howto-base64-encode-with-cc-and-openssl/ http://www.ion...
  • yasi_xi
  • yasi_xi
  • 2013年06月06日 17:55
  • 12957

Libb64:c/c++实现的base64编码解码库函数

base64编码解码本身也不复杂,但要自己写,还是得花点时间,如果能找到现成的可靠的代码,抄来最好,节省了测试的时间。 libb64就是实现base64编码解码的开源库,还提供了C++封装,用起来也...
  • 10km
  • 10km
  • 2016年03月31日 12:11
  • 2885
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Base64系列第四篇 C/C++中使用Base64编码解码(从chromium库中抽取)
举报原因:
原因补充:

(最多只允许输入30个字)