由于项目中需要用到MD5算法,于是在网上找了好几个md5算法的源码文件,结果接口各不相同,很是头疼。翻翻Linux的/usr/include目录,发现/usr/include/openssl/下提供了md5.h,于是写了个小代码测试了一下:
#include <stdio.h>
#include <openssl/md5.h>
#include <assert.h>
#include <string.h>
void PrintHex(char* Buffer, int Size, FILE* fp=stderr)
...{
assert(NULL != Buffer);
fprintf(fp, "===================================================== ");
char* p = NULL;
int i;
for (i=0, p = Buffer; i<Size; i++, p++)
...{
fprintf(fp, "%02x ", (unsigned char)*p);
if (i%16==15)
...{
fprintf(fp, " ");
}
}
fprintf(fp, " ===================================================== ");
}
void test()
...{
char* str = "it's a test";
int len = strlen(str);
char buf[16] = ...{0};
char* p = (char*)MD5((unsigned char*)str, len, (unsigned char*)buf);
PrintHex(buf, sizeof(buf));
PrintHex(p, 16);
}
int main()
...{
test();
return 1;
}
/**//*
g++ -o TestMD5.o -c TestMD5.cpp -g -Wall -Werror
g++ -o TestMD5 TestMD5.o /usr/lib/libssl.so
*/
要注意:链接的时候链接/usr/lib/libssl.so
分享到:
相关推荐
### 工作小记:企业微信嵌H5页面用户权限获取匹配 #### 一、背景与目的 在当前数字化转型的大背景下,企业越来越多地利用移动互联网技术来提升工作效率和服务质量。其中,企业微信作为一种重要的办公协作平台,在...
环境: Linux s12084 2.6.9-67.ELsmp #1 SMP Wed Nov 7 13:58:04 EST 2007 i686 i686 i386 GNU/Linux...在windows 平台, linux 平台下编译都很顺利。hp aCC 也宣称对 boost 1.35 完全支持 。 全部编译是很痛苦的过程
在本项目中,"我的日常小记:spring以及mybatis最终源码" 是一个记录了开发者个人编程经验的项目,主要涉及两个核心框架——Spring和MyBatis。这两个框架是Java开发领域中非常流行的技术栈,广泛应用于企业级后端...
本小记将重点探讨MATLAB在数学建模中的应用及其相关算法。 一、MATLAB基础 MATLAB(Matrix Laboratory)是一个综合性的数值计算与符号计算软件,其核心是矩阵运算。在数学建模中,我们可以利用MATLAB进行数据处理...
EM算法(Expectation-Maximization)是一种用于含有隐变量的概率模型参数估计的算法,尤其在处理含有未观测数据的模型时效果显著。EM算法将复杂的概率模型估计问题转化为两个相对简单的子问题来交替求解,即期望步...
阿里大数据分析平台使用小记 阿里大数据分析平台是阿里巴巴集团旗下的数据分析平台,提供了大数据处理、存储和分析的能力。该平台主要应用于天池大数据竞赛平台,提供了一些使用经验和教程,但不是完整的开发使用...
《数据结构习题总结 拾荒小记》是一份以C++语言实现的数据结构算法集,涵盖了严蔚敏教授经典教材中的80%算法。这份资料旨在帮助学习者巩固和深化对数据结构的理解,同时也为社区提供了一份宝贵的资源。 首先,让...
vue2 项目 + webpack 打包工具,是一个非常经典的组合,但是在...小记:这只是配置的 package.json 文件,更有配置好的 webpack.config.js 文件,以及整个完整的 vue2+webpack5 整个的项目,因为上传的规定可以找我来拿
《RMAN使用小记》 Recovery Manager(RMAN)是Oracle数据库系统中用于数据恢复和备份的关键工具。本文将详细介绍RMAN的一些核心特性和使用方法,帮助读者理解和掌握RMAN的基本操作。 首先,了解RMAN的三个重要特性...
2. **插值算法**:缩放时使用的插值算法会影响结果的质量。常见的插值算法有最近邻插值、双线性插值和三次样条插值等,其中三次样条插值通常能提供较好的效果,但计算量相对较大。 3. **色彩管理**:处理彩色图像时...
LocalCache 不是分布式的,所以它更适合用于单机应用或者在确保数据丢失风险可控的情况下使用。 在 Go 语言中,常见的 LocalCache 库包括 BigCache、freecache 和 ccache。这些库设计时考虑了性能优化,比如通过分...
对于3D打印项目,Linux环境下的开源工具如Slic3r或Cura能够将3D模型转换为可供3D打印机理解的G代码。 Java是一种广泛使用的面向对象的编程语言,可以用于创建3D建模软件或处理与3D打印相关的后处理任务。例如,你...
"Jmail组件使用小记.doc"文件很可能包含了更详尽的使用教程和注意事项,包括如何处理错误、如何调试、如何设置HTML格式的邮件、如何使用模板等功能。阅读这份文档可以帮助你更深入地理解和使用Jmail组件,解决在实际...
git使用小记----作者:谭耀武概述本文以FrameworkBenchmarks为例对git的一些操作进行说明fork版地址:https://github.c
Git是分布式版本控制系统,用于跟踪对软件项目中的文件所做的更改。...在实际开发过程中,还需要注意解决可能出现的冲突、管理分支以及使用其他高级Git命令,如rebasing、merging等,以优化协作流程。
Sublime Text3 安装到使用个人小记
Qt/C++使用小记9【使用UDP创建连接发送消息/传输单个文件】
- **概念**:当使用`auto`作为函数返回类型时,其真正的返回类型由函数末尾的`-> decltype(表达式)`来定义。 - **示例**: ```cpp template, typename T2> auto compose(T1 t1, T2 t2) -> decltype(t1 + t2) { ...
在Solaris上使用优盘小记-Solaris -华夏名网资讯中心 虚拟主机,域名注册,双线虚拟主机,服务器租赁,为7万用户提供服务
在“android开发小记”这个主题中,我们可以深入探讨Android应用程序开发的相关知识,特别是通过查看提供的压缩文件中的代码示例。这些文件名如lesson_8_code.zip至lesson_20_codel.zip,以及不同的Mp3Player版本,...