Linux环境下使用openssl库的MD5进行数据加密
Posted hancq
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux环境下使用openssl库的MD5进行数据加密相关的知识,希望对你有一定的参考价值。
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
以上是关于Linux环境下使用openssl库的MD5进行数据加密的主要内容,如果未能解决你的问题,请参考以下文章