openssl库中的md5加密工具可以将输入字符串加密后输出16字节数。
测试代码如下:
复制代码
1 // test_md5.c
2 #include <stdio.h>
3 #include <string.h>
4 #include <unistd.h>
5 #include <openssl/md5.h>
6
7 int md5_test(void *idata, size_t len, unsigned char *md5)
8 {
9 MD5_CTX ctx;
10
11 if (idata == NULL || len <= 0 || md5 == NULL) {
12 printf("Input param invalid!\n");
13 return -1;
14 }
15
16 memset(&ctx, 0, sizeof(ctx));
17 MD5_Init(&ctx);
18 MD5_Update(&ctx, idata, len);
19 MD5_Final(md5, &ctx);
20
21 return 0;
22 }
23
24 void md5_test1(void)
25 {
26 const char *input_data = "My name is hancq";
27 unsigned char md5[16];
28 int i;
29
30 md5_test(input_data, 16, md5);
31 printf("md5_test1:");
32 for (i = 0; i < 16; i++) {
33 printf("%02x", md5[i]);
34 }
35 printf("\n");
36 }
37
38 void md5_test2(void)
39 {
40 const char *input_data = "My name is hancq";
41 unsigned char md5[16];
42 int i;
43
44 MD5(input_data, 16, md5);
45 printf("md5_test2:");
46 for (i = 0; i < 16; i++) {
47 printf("%02x", md5[i]);
48 }
49 printf("\n");
50 }
51
52 int main(int argc, char **argv)
53 {
54 md5_test1();
55 md5_test2();
56
57 return 0;
58 }
复制代码
编译时需要连接crypto库:
gcc test_md5.c -o test -lcrypto
可以使用linux下的md5sum命令进行数据加密结果验证:
echo -n "My name is hancq" | md5sum
君正X系列开发19--Linux环境下使用openssl库的MD5进行数据加密
于 2018-08-22 20:03:09 首次发布