Php 未定义常量CRYPT_SHA512的使用

Php 未定义常量CRYPT_SHA512的使用,php,hash,crypt,sha512,Php,Hash,Crypt,Sha512,我使用一个php脚本,该脚本使用php的crypt对密码进行散列,并使用SHA512,但是当我尝试检查是否设置了SHA512时,我得到了上述错误。我当然知道我为什么会犯这个错误。。php缺少一些依赖项。我只是不知道这种依赖是什么 有人能告诉我需要安装什么(在Ubuntu服务器上)才能在PHP中使用SHA512吗 谢谢 php文档称PHP5.3.2中添加了对SHA-256和SHA-512的内置支持。如果您使用任何早期版本的PHP,它依赖于您的系统提供的算法的实现,而您的系统显然没有这些算法。确保您

我使用一个php脚本,该脚本使用php的crypt对密码进行散列,并使用SHA512,但是当我尝试检查是否设置了SHA512时,我得到了上述错误。我当然知道我为什么会犯这个错误。。php缺少一些依赖项。我只是不知道这种依赖是什么

有人能告诉我需要安装什么(在Ubuntu服务器上)才能在PHP中使用SHA512吗


谢谢

php文档称PHP5.3.2中添加了对SHA-256和SHA-512的内置支持。如果您使用任何早期版本的PHP,它依赖于您的系统提供的算法的实现,而您的系统显然没有这些算法。

确保您拥有最新版本的PHP5并安装mcrypt-还包含许多其他加密方法,如rinjdael(AES)

底线是,您应该使用mcrypt,不是SHA512或任何md5样式的哈希程序。用暴力破解它们太容易了。谷歌上下都有很多很好的参考资料。下面是使用参考函数urlsafe_b64encode from的3DES哈希URL示例


但这似乎并不适用于密码,因为密码不应该是可解密的。密码应该是散列的(单向的),而不是加密的
$key = "what can i tell you";
$request = http_build_query($_REQUEST);
$request_enc = urlencode(urlsafe_b64encode(mcrypt_ecb(MCRYPT_3DES, $key, $request, MCRYPT_ENCRYPT)));
$url = "http://localhost/takemerightthere/".$request_enc;