使用Open SSL运行C代码
|
我无法编译以下代码。我在终端中使用以下命令在MACOSX中运行它:
$ gcc filename.c -lssl
我知道MACOS已经具有内置的openssl(我可以在终端中作为命令来调用)。但是我不确定我是否以正确的方式将其链接到库。
#include <stdio.h>
#include <openssl/evp.h>
main(int argc, char *argv[])
{
EVP_MD_CTX mdctx;
const EVP_MD *md;
char mess1[] = \"Test Message\\n\";
char mess2[] = \"Hello World\\n\";
unsigned char md_value[EVP_MAX_MD_SIZE];
int md_len, i;
OpenSSL_add_all_digests();
if(!argv[1]) {
printf(\"Usage: mdtest digestname\\n\");
exit(1);
}
md = EVP_get_digestbyname(argv[1]);
if(!md) {
printf(\"Unknown message digest %s\\n\", argv[1]);
exit(1);
}
EVP_MD_CTX_init(&mdctx);
EVP_DigestInit_ex(&mdctx, md, NULL);
EVP_DigestUpdate(&mdctx, mess1, strlen(mess1));
EVP_DigestUpdate(&mdctx, mess2, strlen(mess2));
EVP_DigestFinal_ex(&mdctx, md_value, &md_len);
EVP_MD_CTX_cleanup(&mdctx);
printf(\"Digest is: \");
for(i = 0; i < md_len; i++) printf(\"%02x\", md_value[i]);
printf(\"\\n\");
}
我的错误是:
未定义的符号:
\“ _ EVP_MD_CTX_cleanup \”,引用自:ccfZG7WJ.o中的_main
ld:找不到符号
collect2:ld返回1退出状态
这个错误让我感到惊讶,因为它显示的是\“ Undefined Symbols \”而不是\“找不到头文件\”。您能帮我调试这个问题吗?
谢谢!
没有找到相关结果
已邀请:
3 个回复
剑哎
和
。也包括libcrypto。
(对于该程序,您实际上根本不需要
,但是包含它也没有什么坏处) libssl用于建立实际的SSL或TLS连接,例如使用https连接到Web服务器时。它还导出
,即使仅与密码库一起使用时也很有用。 libcrypto是加密库。它具有加密算法,密钥和证书生成和验证功能,消息身份验证算法等。
邪罗逢确胃
悍蕾驮苇袜