Php: Как включить хеширование blowfish на сервере Debian

Я пытаюсь сделать хеширование blowfish доступным для php на сервере Debian.

Взятый из руководства php по функции crypt() ( http://php.net/manual/en/function.crypt.php), следующий код проверяет криптографические функции...

<?php
echo("DES is " . CRYPT_STD_DES."<br>Extended DES is ".CRYPT_EXT_DES."<br>MD5 is ".CRYPT_MD5."<br>BlowFish is ".CRYPT_BLOWFISH."<br>");

if (CRYPT_STD_DES == 1) {
    echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "<br>\n";
}
if (CRYPT_EXT_DES == 1) {
    echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "<br>\n";
}
if (CRYPT_MD5 == 1) {
    echo 'MD5:          ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "<br>\n";
}
if (CRYPT_BLOWFISH == 1) {
    echo 'Blowfish:     ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "<br>\n";
}
if (CRYPT_SHA256 == 1) {
    echo 'SHA-256:      ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "<br>\n";
}
if (CRYPT_SHA512 == 1) {
    echo 'SHA-512:      ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "<br>\n";
}

 echo "System salt size: ". CRYPT_SALT_LENGTH;
?>

Результат на моем сервере показывает следующие доступные хеши:

testDES - 1 Расширенный DES - 0 MD5 - 1 BlowFish - 0 Стандартный DES: rl.3StKT.4T8M - MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0

Принимая во внимание, что на моей локальной машине с Ubuntu у меня есть доступная рыба и семья ша.

Что мне нужно установить, чтобы запустить blowfish в php на Debian 5.0?

1 ответ

Решение

Хеширование $2a$ blowfish не поддерживается функцией crypt() glibc без исправлений. Предположительно, если вы отследили патчи, применяемые другими дистрибутивами, вы можете перестроить свой glibc с помощью этого патча. Этот сайт ссылается на патч для glibc 2.10.1, с которым вам, вероятно, придется бороться, чтобы применить к lenny's glibc 2.7. Если вам повезет, PHP обнаружит, что crypt() может делать во время выполнения, в противном случае вам, возможно, придется перекомпилировать PHP.

Согласно PHP- документации по crypt, начиная с php5.3, PHP имеет собственную реализацию crypt(), которая может обрабатывать алгоритмы хеширования, не поддерживаемые в локальной системе. Вы можете получить пакеты php 5.3, созданные для lenny (oldstable) из репозитория php53 dotdeb.

Если вы не можете использовать 5.3, тогда php5.2 в старом стабильном репозитории dotdeb 5.2 может иметь достаточно новый патч на укрепление /suhosin для добавления CRYPT_BLOWFISH.

Другие вопросы по тегам