libb64下载地址http://sourceforge.net/projects/libb64

以下为Demo

libb64_demo.c

#include <stdio.h>
#include <string.h>
#include <libb64/cencode.h>
#include <libb64/cdecode.h>
void base64EncodeString(const char *textToEncode, char *buffer);
void base64DecodeString(const char *codeToDecode, char *buffer);
void base64EncodeFile(FILE *fileToEncode, FILE *encodedFile);
void base64DecodeFile(FILE *encodedFile, FILE *decodedFile);
int main()
{
const char *text = "Matt Damon";
char buffer[];
base64EncodeString(text, buffer);
printf("%s", buffer);
const char *code = "R29vZCBXaWxsIEh1bnRpbmc=";
base64DecodeString(code, buffer);
printf("%s\n", buffer);
const char *inputFilename = "易语言5.2修正版.rar";
FILE *inputFile = fopen(inputFilename, "rb");
if (inputFile)
{
const char *encodedFilename = "易语言5.2修正版.rar.txt";
FILE *encodedFile = fopen(encodedFilename, "wb");
if (encodedFile)
{
base64EncodeFile(inputFile, encodedFile);
fclose(encodedFile);
}
else
printf("Cannot open file: %s\n", encodedFile);
fclose(inputFile);
}
else
printf("Cannot open file: %s\n", inputFilename);
const char *encodedFilename = "360DrvMgrInstaller_net.exe.txt";
FILE *encodedFile = fopen(encodedFilename, "rb");
if (encodedFile)
{
const char *decodedFilename = "360DrvMgrInstaller_net";
FILE *decodedFile = fopen(decodedFilename, "wb");
if (decodedFile)
{
base64DecodeFile(encodedFile, decodedFile);
fclose(decodedFile);
}
else
printf("Cannot open file: %s\n", decodedFile);
fclose(encodedFile);
}
else
printf("Cannot open file: %s\n", encodedFilename);
system("pause");
return ;
}
void base64EncodeString(const char *textToEncode, char *buffer)
{
base64_encodestate state;
base64_init_encodestate(&state);
int numberOfBytesEncoded = base64_encode_block(textToEncode, strlen(textToEncode), buffer, &state);
numberOfBytesEncoded += base64_encode_blockend(buffer + numberOfBytesEncoded, &state);
buffer[numberOfBytesEncoded] = '\0';
}
void base64DecodeString(const char *codeToDecode, char *buffer)
{
base64_decodestate state;
base64_init_decodestate(&state);
int numberOfCharactersDecoded = base64_decode_block(codeToDecode, strlen(codeToDecode), buffer, &state);
buffer[numberOfCharactersDecoded] = '\0';
}
void base64EncodeFile(FILE *fileToEncode, FILE *encodedFile)
{
char readBuffer[];
char encodedBuffer[];
int numberOfBytesEncoded;
base64_encodestate state;
base64_init_encodestate(&state);
while (!feof(fileToEncode))
{
size_t numberOfObjects = fread(readBuffer, sizeof(char), , fileToEncode);
numberOfBytesEncoded = base64_encode_block(readBuffer, numberOfObjects, encodedBuffer, &state);
fwrite(encodedBuffer, sizeof(char), numberOfBytesEncoded, encodedFile);
}
numberOfBytesEncoded = base64_encode_blockend(encodedBuffer, &state);
fwrite(encodedBuffer, sizeof(char), numberOfBytesEncoded, encodedFile);
}
void base64DecodeFile(FILE *encodedFile, FILE *decodedFile)
{
char inputBuffer[];
char decodedBuffer[];
int numberOfBytesDecoded;
base64_decodestate state;
base64_init_decodestate(&state);
while (!feof(encodedFile))
{
size_t numberOfCharacters = fread(inputBuffer, sizeof(char), , encodedFile);
numberOfBytesDecoded = base64_decode_block(inputBuffer, numberOfCharacters, decodedBuffer, &state);
fwrite(decodedBuffer, sizeof(char), numberOfBytesDecoded, decodedFile);
}
}

在C语言中使用libb64进行Base64编解码的更多相关文章

  1. Python语言中对于json数据的编解码——Usage of json a Python standard library

    一.概述 1.1 关于JSON数据格式 JSON (JavaScript Object Notation), specified by RFC 7159 (which obsoletes RFC 46 ...

  2. C++,Base64编解码字符串或文件

    参考链接:在C语言中使用libb64进行Base64编解码 GitHub地址:https://github.com/BuYishi/cpp_base64_demo base64_demo.cpp #i ...

  3. ios Base64编解码工具类及使用

    为了避免明码传递http内容,可以用base64编码后传输,收到方再解码,也方便了2进制数据的字符串式传输. 对于ios来说,google给提供了一个很好的工具类,方便进行base64编解码,当然也可 ...

  4. Java实现BASE64编解码

    Java实现BASE64编解码 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  5. Delphi 自带的 Base64 编解码函数

    今天帮别人解决一个关于 Base64 编解码的问题,竟然发现 Delphi 自带了 Base64 编解码的单元,叫 EncdDecd,这名字很拗口而且不直观,估计这是一直很少人关注和知道的原因. 这个 ...

  6. openssl命令行Base64编解码

    openssl对base64编解码的规范支持较差,用它编解码的结果别的语言如php处理很不方便,注意的几点整理如下 1,如果php加密结果做base64编码长度小于64,则需要添加一个换行符opens ...

  7. EasyDarwin开源流媒体云平台中boost Base64编解码后与源长度不匹配的bug

    本文转自EasyDarwin团队Alex的博客:http://blog.csdn.net/cai6811376 EasyDarwin云平台中部分协议使用了Base64编码昨晚报文通信的载体.比如在对摄 ...

  8. 【VBA研究】如何用Base64 编解码方法实现简单的加解密

    Base64编码的思想是是采用64个基本的ASCII码字符对数据进行重新编码,将数据变成字符串实现文本传输.由于编码简单,所以很容易实现,代码也是现成的.利用这个编码规则可以实现简单的加解密.编解码方 ...

  9. python3的base64编解码

    使用python3的base64编解码实现字符串的简易加密解密 引言: 在一些项目中,接口的报文是通过base64加密传输的,所以在进行接口自动化时,需要对所传的参数进行base64编码,对拿到的响应 ...

随机推荐

  1. 让Sublime Text成为静态WEB服务器:SublimeServer

    如果你使用Sublime Text作为你的编辑器,那么在进行HTML和Java开发的时候有一个很有用的功能,帮你完成前端的联调测试,那就是Sublime Text的服务器插件:SublimeServe ...

  2. hihoCoder 1367 等式填空

    明确题意 等号左边是由'+'和'?'组成的算式,其中处于某个整数(即便这个整数只有一位)首位的'?'可以填入1-9中的某个数字,其余'?'可以填入0-9中的某个数字. SOURCE 这里未明确等号左边 ...

  3. Tree 树(树形期望dp)

    题意也是需要解释一下的,这个期望步数,是需要求无限步的时候的,就是你只要能到达,都要算上去, 这个我一开始真的没什么思路,打了暴力,搞一个精度,结果全超时了,看来精度定的太细了. 出题人的题解是这个, ...

  4. python--爬取http://www.kuaidaili.com/并保存为xls

    代码如下: 复制在python3上先试试吧^_^ # -*- coding: utf-8 -*- """ Created on Mon Jun 12 13:27:59 2 ...

  5. linux命令netstat或ifconfig未找到

    linux命令netstat或ifconfig未找到 linux使用netstat或者ifconfig命令时,显示命令未找到.通过yum search netstat这个命令,匹配结果如下:===== ...

  6. mysql主从库

    http://wangwei007.blog.51cto.com/68019/965575 一.mysql主从的原理 1.Replication 线程 Mysql的 Replication 是一个异步 ...

  7. T3185 队列练习1 codevs

    http://codevs.cn/problem/3185/ 题目描述 Description 给定一个队列(初始为空),只有两种操作入队和出队,现给出这些操作请输出最终的队头元素. 操作解释:1表示 ...

  8. Java中的final关键字(转)

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  9. js long类型的日期转成Date,字符串StringBuilder拼接

    longToDate.js //扩展Date的format方法 Date.prototype.format = function (format) { var o = { "M+" ...

  10. python解析网页中js动态添加的内容

    https://www.cnblogs.com/asmblog/archive/2013/05/07/3063809.html https://www.zhihu.com/question/21471 ...