如何在C ++中使用openssl / md5来加密字符串?

时间:2011-10-22 14:51:18

标签: c openssl aes md5

我需要在我的程序中将md5中的字符串加密。 有一个lib openssl,但我是一个新手。 如何使用它来加密一个字符串,哪里可以找到一个好的doc,教我如何使用这个lib,还有其他函数如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 个答案:

答案 0 :(得分:5)

你应该看一下documentation。一个选项是使用此功能:

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

他们声明:

  

MD2(),MD4()和MD5()计算nd字节的MD2,MD4和MD5消息摘要,并将其放入md(其中必须有空间用于MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16字节输出)。如果md为NULL,则将摘要放在静态数组中。

对于AES,如果您还想使用OpenSSL,请查看EVP docthis example如何使用它。请注意,您必须添加

#define AES_BLOCK_SIZE 16

在文件的顶部,它可以工作。

顺便说一下。我真的可以推荐Crypto++ library,因为它很棒并且有各种加密原语; AES,椭圆曲线,MAC,公钥加密等。