如何在C ++中使用openssl / 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有未定义的引用?

你应该看看文档 。 一个选项是使用此function:

 #include  unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md); 

他们声明:

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

至于AES,如果您还想使用OpenSSL,那么请看一下EVP doc以及如何使用它的示例 。 请注意,您必须添加

 #define AES_BLOCK_SIZE 16 

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

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