OpenSSL测试-Base64
任务详情
0. 在openEuler(推荐)或Ubuntu或Windows(不推荐)中完成下面任务 1. 使用工具(如bc,计算机器等)把自己学号转化为16进制,提交转化过程和结果截图(2‘) 2. 使用工具(如echo -e, ultraedit等)把上面转化的结果写入二进制文件“你的学号.dat”中,并用工具`od -tx1 你的学号.dat`,提交命令运行(3’) 3. 使用OpenSSL的base64命令对"你的学号.dat"进行编码解码,提交过程截图(5') 4. 使用OpenSSL编程对"你的学号.dat"进行编码解码,提交代码和运行结果截图。(10’)
https://www.cnblogs.com/20201212ycy/p/17308523.html
使用工具(如bc,计算机器等)把自己学号转化为16进制,提交转化过程和结果截图

使用工具(如echo -e, ultraedit等)把上面转化的结果写入二进制文件“你的学号.dat"
3、使用OpenSSL的base64命令对"你的学号.dat"进行编码解码,提交过程截图
4、使用OpenSSL编程对"你的学号.dat"进行编码解码,提交代码和运行结果截图。
#include <stdio.h> #include <string.h> #include <openssl/evp.h> #include <openssl/x509.h> //Base64编码 void tEVP_Encode() { EVP_ENCODE_CTX *ctx; ctx = EVP_ENCODE_CTX_new(); //EVP编码结构体 unsigned char in[1024]; //输入数据缓冲区 int inl; //输入数据长度 char out[2048]={0}; //输出数据缓冲区 int outl; //输出数据长度 FILE *infp; //输入文件句柄 FILE *outfp; //输出文件句柄 infp = fopen("20201208.dat","rb");//打开待编码的文件 if(infp == NULL) { printf("Open File \"20201208.dat\" for Read Err.\n"); return; } outfp = fopen("20201208.txt","w");//打开编码后保存的文件 if(outfp == NULL) { printf("Open File \"20201208.txt\" For Write Err.\n"); return; } EVP_EncodeInit(ctx);//Base64编码初始化 printf("文件\"20201208.dat\" Base64编码后为:\n"); //循环读取原文,并调用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);//输出编码结果到文件 printf("%s",out); } EVP_EncodeFinal(ctx,out,&outl);//完成编码,输出最后的数据。 fwrite(out,1,outl,outfp); printf("%s",out); fclose(infp); fclose(outfp); printf("对文件\"20201208.dat\" Base64编码完成,保存到\"20201208.txt\"文件.\n\n\n"); } //Base64解码 void tEVP_Decode() { EVP_ENCODE_CTX *ctx; ctx = EVP_ENCODE_CTX_new(); //EVP编码结构体 char in[1024]; //输入数据缓冲区 int inl; //输入数据长度 unsigned char out[1024]; //输出数据缓冲区 int outl; //输出数据长度 FILE *infp; //输入文件句柄 FILE *outfp; //输出文件句柄 infp = fopen("20201208.txt","r");//打开待解码的文件 if(infp == NULL) { printf("Open File \"20201208.txt\" for Read Err.\n"); return; } outfp = fopen("20201208.dat","wb");//打开解码后保存的文件 if(outfp == NULL) { printf("Open File \"20201208.txt\" For Write Err.\n"); return; } EVP_DecodeInit(ctx);//Base64解码初始化 printf("开始对文件\"20201208.txt\" Base64解码...\n\n"); //循环读取原文,并调用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);//完成解码,输出最后的数据。 fwrite(out,1,outl,outfp); fclose(infp); fclose(outfp); printf("对文件\"20201208.txt\" Base64解码完成,保存为\"20201208-1.dat\"\n\n\n"); } int main() { tEVP_Encode(); tEVP_Decode(); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~