Почему мой md5 всегда отличается, если я запускаю программу несколько раз?

У меня есть программа, которая шифрует строку и вычисляет md5, но если я запускаю программу несколько раз, она выводит разные результаты. Моя программа прочитала ключ из того же файла.

int main(int argc, char* argv[])
{
FILE* f;
f = fopen(argv[1], "r");
RSA *private_key  =  PEM_read_RSAPrivateKey(f, NULL, NULL, NULL);

unsigned char sourceText[] = "source_string";
unsigned char *cipher =(unsigned char*) OPENSSL_malloc(RSA_size(private_key));

int ret = RSA_private_encrypt(strlen((char*)text), text, cipher, private_key, RSA_PKCS1_PADDING);

unsigned char md5Result[MD5_DIGEST_LENGTH];
MD5((unsigned char*)&cipher, strlen((char*) cipher), (unsigned char*)&md5Result);
printf("md5  %s \n", BN_bn2hex(BN_bin2bn(md5Result, MD5_DIGEST_LENGTH, NULL)));
return 0;
}

Что не так с моим кодом?

-1

Решение

Здесь происходит много уродливого приведения, но похоже, что проблема в том, что вы берете адрес объекта локального указателя. cipher вместо того, чтобы использовать то, на что он указывает. С помощью cipher вместо (unsigned char*)&cipher должен это исправить.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]