'SHA1'已被弃用:首先在OS X 10.7中弃用?

时间:2013-11-07 15:45:09

标签: c macos gcc openssl osx-mavericks

所以我试图编译一个具有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进行编译时链接任何库吗?

2 个答案:

答案 0 :(得分:2)

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

如果您使用的是更多的openssl,则还需要使用-lssl在libssl中进行链接。

所以,例如,如果你的测试代码是test.c,你可以这样做:

gcc -o test test.c -lcrypto -lssl

答案 1 :(得分:1)

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

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

关于为什么会发生这种情况有一些争论:Why is Apple Deprecating OpenSSL in MacOS 10.7 (Lion)?