2010-12-02 42 views
2

我使用了一个php脚本,它使用php的crypt隐藏密码并使用SHA512,但是当我尝试检查是否设置了SHA512时,出现上述错误。当然,我知道为什么我得到这个错误.. PHP是缺少一些依赖。我只是不知道那个依赖是什么。使用未定义的常量CRYPT_SHA512

任何人都可以请告诉我需要安装(在Ubuntu服务器上)以便能够在PHP中使用SHA512?

谢谢!

回答

2

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

+0

谢谢,就是这样。 – Naatan 2010-12-02 19:50:53

0

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

+0

密码应该是散列(单向)未加密 – Ozzy 2012-04-28 12:33:06

0

底线了很多,你应该使用mcrypt的,不SHA512或任何MD5风格散列器。暴力破解它们太容易了。在http://www.php.net/manual/en/function.mcrypt-generic.php以及全谷歌有很多很好的参考。下面是使用参考函数urlsafe_b64encode的一个3DES哈希URL的示例http://www.php.net/manual/en/function.mcrypt-generic.php#71135

$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; 
+0

这似乎并不适用于密码,但它不应该是可解密的。 – Naatan 2010-12-02 20:38:19