Назад | Перейти на главную страницу

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 и семейство sha.

Что мне нужно установить, чтобы blowfish работал на php на debian 5.0?

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

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

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