红联Linux门户
Linux帮助

Linux环境下使用openssl库的MD5进行数据加密

发布时间:2016-10-13 09:27:05来源:linux网站作者:hancq
openssl库中的md5加密工具可以将输入字符串加密后输出16字节数。
 
测试代码如下:
// test_md5.c
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <openssl/md5.h>
int md5_test(void *idata, size_t len, unsigned char *md5)
{
MD5_CTX ctx;
if (idata == NULL || len <= 0 || md5 == NULL) {
printf("Input param invalid!\n");
return -1;
}
memset(&ctx, 0, sizeof(ctx));
MD5_Init(&ctx);
MD5_Update(&ctx, idata, len);
MD5_Final(md5, &ctx);
return 0;
}
void md5_test1(void)
{
const char *input_data = "My name is hancq";
unsigned char md5[16];
int i;
md5_test(input_data, 16, md5);
printf("md5_test1:");
for (i = 0; i < 16; i++) {
printf("%02x", md5[i]);
}
printf("\n");
}
void md5_test2(void)
{
const char *input_data = "My name is hancq";
unsigned char md5[16];
int i;
MD5(input_data, 16, md5);
printf("md5_test2:");
for (i = 0; i < 16; i++) {
printf("%02x", md5[i]);
}
printf("\n");
}
int main(int argc, char **argv)
{
md5_test1();
md5_test2();
return 0;
}
 
编译时需要连接crypto库:
gcc test_md5.c -o test -lcrypto
 
可以使用linux下的md5sum命令进行数据加密结果验证:
echo -n "My name is hancq" | md5sum
 
本文永久更新地址:http://www.linuxdiyf.com/linux/24972.html