C语言调用OpenSSL的md5计算方式

xingyun86 2022-10-13 1308

C语言调用OpenSSL的md5计算方式

方式1

#include <openssl/md5.h>
#include <stdio.h>
#include <string.h>
void md5hexToString(unsigned char *md,char *result){
    // char tmp[3];
    for (size_t i = 0; i <= 15; i++){
        sprintf(result+i*2,"%02x",md[i]);
    }
    return;
}
int main(int argc, char const *argv[])
{	
    //存储md5的hex结果
    unsigned char md[16] = {0};
    //存储hex对应的字符串结果
    char result[33] = {0};
    
    MD5("helloworld",10,md);
    md5hexToString(md,result);
    printf("%s",result);
    return 0;
}

  1. 相较于第二种方式 只需要执行一次MD5()函数即可 也不需要声明MD5_CTX变量

方式2

#include <openssl/md5.h>
#include <stdio.h>
#include <string.h>
void md5hexToString(unsigned char *md,char *result){
    // char tmp[3];
    for (size_t i = 0; i <= 15; i++){
        sprintf(result+i*2,"%02x",md[i]);
    }
    return;
}
int main(int argc, char const *argv[])
{	
    //存储md5的hex结果
    unsigned char md[16] = {0};
    //存储hex对应的字符串结果
    char result[33] = {0};
    
    MD5_CTX c;
    MD5_Init(&c);
    
    //这个方式你可以多次执行Update函数
    MD5_Update(&c,"helloworld1",10);
    MD5_Update(&c,"helloworld2",10);
    
    MD5_Final(md,&c);
    
    md5hexToString(md,result);
    printf("%s",result);
    return 0;
}

  1. 这种方式相较于第一种的好处在于 可以多次执行MD5_Update函数更新md5的值。对于大文件来说 不必一次性分配过多内存

编译的时候 需要加上-lcrypto:

gcc md5.c -lcrypto -o md5


×
打赏作者
最新回复 (0)
只看楼主
全部楼主
返回