?? main.c
字號:
#include <stdio.h>
#include <string.h>
#include <windows.h>
#include <openssl/evp.h>
#include <openssl/x509.h>
//Base64編碼
void tEVP_Encode()
{
EVP_ENCODE_CTX ctx; //EVP編碼結(jié)構(gòu)體
unsigned char in[1024]; //輸入數(shù)據(jù)緩沖區(qū)
int inl; //輸入數(shù)據(jù)長度
char out[2048]={0}; //輸出數(shù)據(jù)緩沖區(qū)
int outl; //輸出數(shù)據(jù)長度
FILE *infp; //輸入文件句柄
FILE *outfp; //輸出文件句柄
infp = fopen("test.dat","rb");//打開待編碼的文件
if(infp == NULL)
{
printf("Open File \"Test.dat\" for Read Err.\n");
return;
}
outfp = fopen("test.txt","w");//打開編碼后保存的文件
if(outfp == NULL)
{
printf("Open File \"test.txt\" For Write Err.\n");
return;
}
EVP_EncodeInit(&ctx);//Base64編碼初始化
printf("文件\"Test.dat\" Base64編碼后為:\n");
//循環(huán)讀取原文,并調(diào)用EVP_EncodeUpdate計算Base64編碼
while(1)
{
inl = fread(in,1,1024,infp);
if(inl <= 0)
break;
EVP_EncodeUpdate(&ctx,out,&outl,in,inl);//編碼
fwrite(out,1,outl,outfp);//輸出編碼結(jié)果到文件
printf("%s",out);
}
EVP_EncodeFinal(&ctx,out,&outl);//完成編碼,輸出最后的數(shù)據(jù)。
fwrite(out,1,outl,outfp);
printf("%s",out);
fclose(infp);
fclose(outfp);
printf("對文件\"Test.dat\" Base64編碼完成,保存到\"test.txt\"文件.\n\n\n");
}
//Base64解碼
void tEVP_Decode()
{
EVP_ENCODE_CTX ctx; //EVP編碼結(jié)構(gòu)體
char in[1024]; //輸入數(shù)據(jù)緩沖區(qū)
int inl; //輸入數(shù)據(jù)長度
unsigned char out[1024]; //輸出數(shù)據(jù)緩沖區(qū)
int outl; //輸出數(shù)據(jù)長度
FILE *infp; //輸入文件句柄
FILE *outfp; //輸出文件句柄
infp = fopen("test.txt","r");//打開待解碼的文件
if(infp == NULL)
{
printf("Open File \"Test.txt\" for Read Err.\n");
return;
}
outfp = fopen("test-1.dat","wb");//打開解碼后保存的文件
if(outfp == NULL)
{
printf("Open File \"test-1.txt\" For Write Err.\n");
return;
}
EVP_DecodeInit(&ctx);//Base64解碼初始化
printf("開始對文件\"Test.txt\" Base64解碼...\n\n");
//循環(huán)讀取原文,并調(diào)用EVP_DecodeUpdate進行Base64解碼
while(1)
{
inl = fread(in,1,1024,infp);
if(inl <= 0)
break;
EVP_DecodeUpdate(&ctx,out,&outl,in,inl);//Base64解碼
fwrite(out,1,outl,outfp);//輸出到文件
}
EVP_DecodeFinal(&ctx,out,&outl);//完成解碼,輸出最后的數(shù)據(jù)。
fwrite(out,1,outl,outfp);
fclose(infp);
fclose(outfp);
printf("對文件\"Test.txt\" Base64解碼完成,保存為\"test-1.dat\"\n\n\n");
}
int main()
{
tEVP_Encode();
tEVP_Decode();
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -