Как я могу использовать openssl / md5 в C ++ для шифрования строки? - PullRequest
3 голосов
/ 22 октября 2011

Мне нужно зашифровать в md5 строку в моей программе. Есть библиотека openssl, но я новичок в этом. Как можно зашифровать строку, используя это, и где я могу найти хороший документ, который научит меня, как использовать эту библиотеку, также с другой функцией, такой как aes?

Я пробовал этот код:

int main()
{
    unsigned char result[MD5_DIGEST_LENGTH];
    const unsigned char* str;
    str = (unsigned char*)"hello";
    unsigned int long_size = 100;
    MD5(str,long_size,result);
}

Но компилятор сказал мне: неопределенная ссылка на MD5.

Почему существует и неопределенная ссылка на MD5?

1 Ответ

5 голосов
/ 22 октября 2011

Вы должны взглянуть на документацию . Можно использовать эту функцию:

#include <openssl/md5.h>
unsigned char *MD5(const unsigned char *d, 
                   unsigned long n,
                   unsigned char *md);

На что они заявляют:

MD2 (), MD4 () и MD5 () вычисляют дайджест сообщения MD2, MD4 и MD5 байтов n в d и помещают его в md (в котором должно быть место для MD2_DIGEST_LENGTH = = MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16 байт вывода). Если md равно NULL, дайджест помещается в статический массив.

Что касается AES, если вы также хотите использовать OpenSSL, взгляните на EVP doc и в этом примере о том, как его использовать. Просто отметьте, что вы должны добавить

#define AES_BLOCK_SIZE 16

В верхней части файла, чтобы он работал, хотя.

Btw. Я действительно могу порекомендовать библиотеку Crypto ++ , поскольку она великолепна и имеет все виды криптографических примитивов; AES, эллиптические кривые, MAC, криптография с открытым ключом и так далее.

...