我已经坚持了一天,实施openssl(在windows上)md5。这样一个简单的事情似乎永远都是它。运行时它会崩溃@ MD5_Update。有什么我想念的,如果我有,任何有用的提示,以改善我的代码,所以我再也不会这样做?我按照这些文件:http://www.openssl.org/docs/crypto/md5.html谢谢。我真的很感激。 : - )
#include <iostream>
#include <iomanip>
#include <openssl/md5.h>
using namespace std;
int main()
{
unsigned char data[] = {0xd1, 0x31, 0xdd, 0x02, 0xc5, 0xe6, 0xee, 0xc4, 0x69, 0x3d, 0x9a, 0x06, 0x98, 0xaf, 0xf9, 0x5c};
unsigned char hash[16];
MD5_CTX *c;
MD5_Update(c,data,16);
MD5_Final(hash, c);
for(int i=0;i<16;i++)
cout << setfill('0') << setw(2) << hex << (int)hash[i] << " ";
int a;
cin >> a;
return 0;
}
答案 0 :(得分:2)
您永远不会创建,也不会分配空间来保存MD5上下文。
MD5_CTX *c;
MD5_Update(c,data,16);
在为变量赋值之前,不能使用变量!在第一行之后,c
会有一些任意的垃圾值,然后您将其传递给MD5_Update
!
尝试:
MD5_CTX c;
MD5_Init(&c);
MD5_Update(&c, data, 16);