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 
  • 相关阅读:
    hdu--2852--树状数组
    hdu--2848--未解决
    二进制与十进制之间蛮好的转换方式
    hdu--2846--字典树<怪我思维不够跳跃>
    hdu--2845--dp
    hdu--2844--多重背包
    hdu--1789--贪心||优先队列
    hdu--1978--记忆化深度搜索||递推
    hdu--2830--任意交换列的矩阵
    hdu--1506--矩阵求和<stack>
  • 原文地址:https://www.cnblogs.com/hancq/p/5518523.html
Copyright © 2011-2022 走看看