小标
2018-10-10
来源 :
阅读 2784
评论 0
摘要:本文主要向大家介绍了C/C++知识点之在C语言中使用Libb64进行Base64编解码,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之在C语言中使用Libb64进行Base64编解码,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
以下为Demo
CLibb64Demo.c
#include
#include
#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[1000];
base64EncodeString(text, buffer);
printf("%s", buffer);
const char *code = "R29vZCBXaWxsIEh1bnRpbmc=";
base64DecodeString(code, buffer);
printf("%s\n", buffer);
const char *inputFilename = "E:/Packages/Java/Android/docs-24_r01.zip";
FILE *inputFile = fopen(inputFilename, "rb");
if (inputFile)
{
const char *encodedFilename = "E:/Packages/Java/Android/docs-24_r01.zip.txt";
FILE *encodedFile = fopen(encodedFilename, "wb");
if (encodedFile)
{
base64EncodeFile(inputFile, encodedFile);
fclose(encodedFile);
}
else
printf("Cannot open file: %s", encodedFile);
fclose(inputFile);
}
else
printf("Cannot open file: %s", inputFile);
const char *encodedFilename = "en_office_professional_2007_cd_X12-42316.iso.txt";
FILE *encodedFile = fopen(encodedFilename, "rb");
if (encodedFile)
{
const char *decodedFilename = "office";
FILE *decodedFile = fopen(decodedFilename, "wb");
if (decodedFile)
{
base64DecodeFile(encodedFile, decodedFile);
fclose(decodedFile);
}
else
printf("Cannot open file: %s", decodedFile);
fclose(encodedFile);
}
else
printf("Cannot open file: %s", encodedFile);
return 0;
}
void base64EncodeString(const char *textToEncode, char *buffer)
{
base64_encodestate state;
base64_init_encodestate(&state);
int numberOfEncodedBytes = base64_encode_block(textToEncode, strlen(textToEncode), buffer, &state);
numberOfEncodedBytes += base64_encode_blockend(buffer + numberOfEncodedBytes, &state);
buffer[numberOfEncodedBytes] = ‘\0‘;
}
void base64DecodeString(const char *codeToDecode, char *buffer)
{
base64_decodestate state;
base64_init_decodestate(&state);
int numberOfCharacters = base64_decode_block(codeToDecode, strlen(codeToDecode), buffer, &state);
buffer[numberOfCharacters] = ‘\0‘;
}
void base64EncodeFile(FILE *fileToEncode, FILE *encodedFile)
{
char readBuffer[1024];
char encodedBuffer[2048];
int numberOfEncodedBytes;
base64_encodestate state;
base64_init_encodestate(&state);
while (!feof(fileToEncode))
{
size_t numberOfObjects = fread(readBuffer, sizeof(char), 1024, fileToEncode);
numberOfEncodedBytes = base64_encode_block(readBuffer, numberOfObjects, encodedBuffer, &state);
fwrite(encodedBuffer, sizeof(char), numberOfEncodedBytes, encodedFile);
}
numberOfEncodedBytes = base64_encode_blockend(encodedBuffer, &state);
fwrite(encodedBuffer, sizeof(char), numberOfEncodedBytes, encodedFile);
}
void base64DecodeFile(FILE *encodedFile, FILE *decodedFile)
{
char inputBuffer[1024];
char decodedBuffer[2048];
int numberofDecodedBytes;
base64_decodestate state;
base64_init_decodestate(&state);
while (!feof(encodedFile))
{
size_t numberOfCharacters = fread(inputBuffer, sizeof(char), 1024, encodedFile);
numberofDecodedBytes = base64_decode_block(inputBuffer, numberOfCharacters, decodedBuffer, &state);
fwrite(decodedBuffer, sizeof(char), numberofDecodedBytes, decodedFile);
}
}
Compilation.bat
gcc -std=c11 CLibb64Demo.c libb64/*.c -o CLibb64Demo
CLibb64Demo
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
喜欢 | 1
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号