base64 和 md5
概览
1.base64和md5都可以通过apr-util库完成
2.base64编码通过apr_base64_encode()实现
3.md5编码通过apr_md5()实现
正文
1.安装apr库
apt-get install libaprutil1
2.base64编码
#include <stdio.h>
#include <string.h>
#include<apr-1.0/apr_base64.h>
#include<apr-1.0/apr_md5.h>
#include<iostream>
using namespace std;
int main(){
const unsigned char *str="hello";
unsigned char decode_str[1000];
int len = apr_base64_encode(decode_str,str, strlen(str));
cout<<decode_str<<endl;
return 0;
}
编译
g++ test2.cpp -laprutil-1 -g -O0 -lpthread -lcrypt -fpermissive -I/usr/include/apr-1.0
md5编码
#include <stdio.h>
#include <string.h>
#include<apr-1.0/apr_base64.h>
#include<apr-1.0/apr_md5.h>
#include<iostream>
using namespace std;
int main(){
const char *str="hello";
unsigned char digest[128], digest_str[128];
int len = apr_md5(digest, str, strlen(str));
int x, i;
unsigned int b;
//散列出来的哈希值每个占8位,在实际过程中,不方便查看和对比(乱码),所以实际使用过程中,总是将md5值
//一个8位的hash拆成两个4位,并映射到字符 0~9、a~z中
for (x = i = 0; x < 16; x++) {
b = (digest[x] >> 4) & 15;
digest_str[i++] = b + (b > 9 ? 'a' - 10 : '0');
b = digest[x] & 15;
digest_str[i++] = b + (b > 9 ? 'a' - 10 : '0');
}
digest_str[i] = '\0';
cout << digest_str <<endl;
return 0;
}
编译
g++ test2.cpp -laprutil-1 -g -O0 -lpthread -lcrypt -fpermissive -I/usr/include/apr-1.0
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 提示词工程——AI应用必不可少的技术
· 地球OL攻略 —— 某应届生求职总结
· 字符编码:从基础到乱码解决
· SpringCloud带你走进微服务的世界