如何在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,公钥加密等。