C ++(win)OpenSSL MD5崩溃

时间:2012-01-10 23:35:29

标签: c++ encryption openssl md5

我已经坚持了一天,实施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;
}

1 个答案:

答案 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);