2010-12-02 3 views
2

Я использую php-скрипт, который хэширует пароли с использованием склепа php и использует SHA512, однако, когда я пытаюсь проверить, установлен ли SHA512, я получаю вышеуказанную ошибку. Конечно, я знаю, ПОЧЕМУ я получаю эту ошибку. В php отсутствует какая-то зависимость. Я просто не знаю, что это за зависимость.Использование неопределенной константы CRYPT_SHA512

Может кто-нибудь скажет мне, что мне нужно установить (на сервере Ubuntu), чтобы использовать SHA512 в PHP?

Спасибо!

ответ

2

В php docs говорится, что встроенная поддержка SHA-256 и SHA-512 была добавлена ​​в PHP 5.3.2. Если вы используете какие-либо более ранние версии PHP, он опирается на реализации этих алгоритмов, предоставляемых вашей системой, которые, по-видимому, у вас нет.

+0

Спасибо, что было именно так. – Naatan 2010-12-02 19:50:53

0

Убедитесь, что вы имеете последнюю версию PHP5 и установить Mcrypt - также содержит много других методов шифрования, как rinjdael (AES)

+0

пароли должны быть хешированы (в одну сторону), а не зашифрованы – Ozzy 2012-04-28 12:33:06

0

Bottom линии, вы должны использовать Mcrypt, не SHA512 или любой md5 стиль Hasher. Слишком просто переборщить их. Существует тонна хорошей справки в http://www.php.net/manual/en/function.mcrypt-generic.php и во всем Google. Ниже приведен пример хеширован URL 3DES с использованием опорной функции urlsafe_b64encode от 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