gpt4 book ai didi

php - 来自 openssl lib 的 c MD5 与 php md5 不匹配怎么来的?

转载 作者:太空宇宙 更新时间:2023-11-04 00:40:59 25 4
gpt4 key购买 nike

我正在尝试创建一个 md5 散列,我正在将其与 php md5 散列进行比较。

两者不一样

下面是我的c代码和php compairison

为什么两个md5不一样?

发出指令

gcc -Wall -lssl  -o test test.c

代码测试.c

#include <stdio.h>
#include <openssl/md5.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <openssl/md5.h>
#include <time.h>

unsigned char result[MD5_DIGEST_LENGTH];

// Print the MD5 sum as hex-digits.
void print_md5_sum(unsigned char* md, char* md5) {

int i;

for(i=0; i < MD5_DIGEST_LENGTH; i++) {

char temp[3];
snprintf(temp,sizeof(temp),"%02x",md[i]);

if(i == 0){
strncpy(md5,temp,3);
}else{
strncat(md5,temp,MD5_DIGEST_LENGTH);
}
}

printf("md5 is %s \n", md5);
}

int main(int argc, char** argv ){

char* file_buffer = "testtest";
char buffer[MD5_DIGEST_LENGTH +1];

MD5((unsigned char*) file_buffer, sizeof(file_buffer), result);

printf("length %i\n", MD5_DIGEST_LENGTH);

print_md5_sum(result,buffer);
printf("%s \n" ,buffer);

return 0;
}

php代码

<?php
echo md5("testtest");
?>

结果

PHP MD5

05a671c66aefea124cc08b76ea6d30bb

c 代码 md5

098f6bcd4621d373cade4e832627b4f6

最佳答案

sizeof(file_buffer) 没有给您正确的长度来计算 MD5 总和。它只为您提供指针 file_buffer 的大小,这可能是 4 或 8,具体取决于您的平台。

在这种情况下,您最好像这样调用 MD5() 函数:

MD5((unsigned char*) file_buffer, strlen(file_buffer), result);

关于php - 来自 openssl lib 的 c MD5 与 php md5 不匹配怎么来的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8246788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com