我需要在我的程序中将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
的未定义引用?
答案 0 :(得分:5)
你应该看一下documentation。一个选项是使用此功能:
#include <openssl/md5.h>
unsigned char *MD5(const unsigned char *d,
unsigned long n,
unsigned char *md);
他们声明:
MD2(),MD4()和MD5()计算
n
处d
字节的MD2,MD4和MD5消息摘要,并将其放入md
(其中必须有空间用于MD2_DIGEST_LENGTH == MD4_DIGEST_LENGTH == MD5_DIGEST_LENGTH == 16字节输出)。如果md
为NULL,则将摘要放在静态数组中。
对于AES,如果您还想使用OpenSSL,请查看EVP doc和this example如何使用它。请注意,您必须添加
#define AES_BLOCK_SIZE 16
在文件的顶部,它可以工作。
顺便说一下。我真的可以推荐Crypto++ library,因为它很棒并且有各种加密原语; AES,椭圆曲线,MAC,公钥加密等。