【发布时间】:2012-10-13 15:47:04
【问题描述】:
这里是 C 代码:
#include <openssl/sha.h>
#include <stdio.h>
char *hash_sha512(char *data){
SHA512_CTX ctx;
char *md=malloc(sizeof(char)*(SHA512_DIGEST_LENGTH+1));
SHA512_Init(&ctx);
SHA512_Update(&ctx, data, strlen(data));
SHA512_Final(md, &ctx);
md[SHA512_DIGEST_LENGTH]='\0';
return md;
}
int main(int argc, char *argv[]){
str=hash_sha512("GFLOuJnR19881218");
printf("%s\n", str);
free(str);
return 1;
}
输出:
�
这是 PHP 代码:
$hash=hash('sha512', 'GFLOuJnR19881218', TRUE);
输出:
�4��ǰ��II�-A[r�?�� �Η#��D6π�8jD���?���J�b9���^X�
C代码和PHP代码的结果不一样,我的代码有什么问题?
【问题讨论】:
-
你得到什么错误?贴一些例子。
-
data和$data很可能不同。 -
打印 C 和 PHP 函数的输入和输出,这样我们就可以看到你在用
different讨论什么 -
C代码和PHP代码都可以,但是输入相同的字符串结果不同。
-
字符串之间有足够的相似性,可以断定你被编码弄糊涂了。