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. 【Luogu】P2762太空飞行计划(最大权闭合图)

    题目链接 woc这题目的输入格式和输出格式真的恶心 首先我们就着样例讲一下闭合图 如图所示,第一层是两个实验节点,带来正收益:第二层是三个仪器节点,带来负收益:问讲道理到终点可以获得多大收益. 闭合图 ...

  2. 刷题总结——支线剧情(bzoj3876费用流)

    题目: [故事背景] 宅男JYY非常喜欢玩RPG游戏,比如仙剑,轩辕剑等等.不过JYY喜欢的并不是战斗场景,而是类似电视剧一般的充满恩怨情仇的剧情.这些游戏往往 都有很多的支线剧情,现在JYY想花费最 ...

  3. 算法复习——凸包加旋转卡壳(poj2187)

    题目: Description Bessie, Farmer John's prize cow, has just won first place in a bovine beauty contest ...

  4. P1754 球迷购票问题 (卡特兰数,递推)

    题目背景 盛况空前的足球赛即将举行.球赛门票售票处排起了球迷购票长龙. 按售票处规定,每位购票者限购一张门票,且每张票售价为50元.在排成长龙的球迷中有N个人手持面值50元的钱币,另有N个人手持面值1 ...

  5. 【BZOJ1305】dance跳舞(最大流,裂点,二分答案)

    题意:一次舞会有n个男孩和n个女孩.每首曲子开始时,所有男孩和女孩恰好配成n对跳交谊舞.每个男孩都不会和同一个女孩跳两首(或更多)舞曲. 有一些男孩女孩相互喜欢,而其他相互不喜欢(不会“单向喜欢”). ...

  6. linux 管道符号 | ,以及&& ||等等特殊符号笔记

    管道和重导向:“|”.“>”.“>>”.“<” 重导向就是使命令改变它所认定的标准输出.“>”可将结果输出到文件中,该文件原有内容会被删除,“>>”则将结果附 ...

  7. Codeforces Round #268 (Div. 2) D. Two Sets [stl - set + 暴力]

    8161957                 2014-10-10 06:12:37     njczy2010     D - Two Sets             GNU C++     A ...

  8. hdu4848 求到达每个点总时间最短(sum[d[i]])。

    开始的时候是暴力dfs+剪枝,怎么也不行.后来参考他人思想: 先求出每个点之间的最短路(这样预处理之后的搜索就可以判重返回了),截肢还是关键:1最优性剪枝(尽量最优:目前的状态+预计还有的最小时间&g ...

  9. luogu P1704 寻找最优美做题曲线

    题目背景 nodgd是一个喜欢写程序的同学,前不久(好像还是有点久了)洛谷OJ横空出世,nodgd同学当然第一时间来到洛谷OJ刷题.于是发生了一系列有趣的事情,他就打算用这些事情来出题恶心大家-- 题 ...

  10. nginx原配置

    #原配置 server { listen ; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main ...