zoukankan      html  css  js  c++  java
  • 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!
    ");
    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("
    ");
    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("
    ");
    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 
  • 相关阅读:
    浏览器—CORS 通信的学习总结
    前端算法
    移动端适配时对meta name="viewport" content="width=device-width,initial-scale=1.0"的理解
    react和vue的区别
    对xss攻击和csrf攻击的理解
    前端如何解决跨域
    你没那么重要
    五福
    天道
    决策
  • 原文地址:https://www.cnblogs.com/hancq/p/5518523.html
Copyright © 2011-2022 走看看