1

所以我试图编译一个具有SHA1函数的代码..我包括以下标题:

#include <openssl/sha.h>

编译时出现以下错误:

test.c:9:5: error: 'SHA1' is deprecated: first deprecated in OS X 10.7
  [-Werror,-Wdeprecated-declarations]
SHA1(msg, strlen(msg), hs);
^

但是手册页仍然有该功能的描述。

任何人都可以为类似功能( MD5 或 SHA1 )建议任何其他标头吗?

PS - 在使用 gcc 编译时我还需要链接任何库吗?

4

2 回答 2

2

你仍然可以使用它。已弃用并不意味着不可用。建议使用不同的散列算法。您需要链接到 libcrypto - 添加-lcrypto到要链接的库。

如果你使用更多的 openssl,你还需要在 libssl 中链接,使用-lssl.

因此,例如,如果您的测试代码是 test.c,您将执行以下操作:

gcc -o test test.c -lcrypto -lssl
于 2013-11-07T16:03:29.077 回答
1

Apple 已经弃用 OpenSSL,但不用担心,OpenSSL 是一个巨大的项目,不会很快消失。

-Wno-error=deprecated-declarations您可以通过添加到命令行来关闭已弃用的错误。这将保留警告(这很有用,因为它可以帮助您捕获其他不推荐使用的声明)而不会导致它出错。

关于为什么会在这篇文章中发生这种情况存在一些争论:为什么 Apple 在 MacOS 10.7 (Lion) 中弃用 OpenSSL?

于 2013-11-07T16:08:25.807 回答