本文假设你已经安装好了OpenSSL,并且持有一份1.1.1的源码。
MD5相关的头文件在md5.h中、源文件在crypto/md5目录中。
这个结构定义了MD5运算的海棉算法上下文。主要字段含义:
A, B, C, D —— 存放海棉运算的中间结果。
data —— 数据分组缓冲区,用于暂存不够分组大小的数据。
num —— 缓冲区数据大小。
在1.1.1中,大多数的数据结构已经不再向使用者开放,从封装的角度来看,这是更合理的。如果你在头文件中找不到结构定义,不妨去源码中搜一搜。
int MD5_Init(MD5_CTX *c)
初使化MD5上下文结构。
总是返回1。
int MD5_Update(MD5_CTX *c, const void *data, size_t len)
向MD5上下文输入字节流。
成功返回1,失败返回0。
int MD5_Final(unsigned char *md, MD5_CTX *c)
生成最终的MD5摘要串。
成功返回1,失败返回0。
unsigned char *MD5(const unsigned char *d, size_t n, unsigned char *md)
对于短的字符串,可以使用该函数一次性生成MD5摘要,简化调用。
下面这个例子演示了使用两种方式生成MD5摘要,并对比结果。
输出:
ret:1
e380e88e8d09ebf8d8659a15b0ea70b5
ret 0x7fff90096b20
SMD5 0x7fff90096b20
e380e88e8d09ebf8d8659a15b0ea70b5
#include <iostream>using namespace std
#include "md5.h"
int main(int argc, char* argv[])
{
string instr
getline(cin,instr)
MD5 md5cls(instr)
cout<<md5cls.toString()
return 0
}
这样应该就可以了,
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)