Php: Como habilitar hashing blowfish em um servidor debian

3

Estou tentando tornar o hash blowfish disponível para php em um servidor Debian.

Extraído do manual do PHP na função crypt () ( link ), as seguintes verificações de código para funções criptográficas ...

<?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;
?>

O resultado no meu servidor mostra os seguintes hashes disponíveis:

testDES é 1 O DES prolongado é 0 MD5 é 1 O BlowFish é 0 DES padrão: rl.3StKT.4T8M MD5: $ 1 $ rasmusle $ rISCgZzpwk3UhDidwXvin0

Considerando que na minha máquina Ubuntu local eu pareço ter blowfish e a família sha disponíveis.

O que eu preciso instalar para obter o blowfish rodando em php no debian 5.0?

    
por Kzqai 01.03.2011 / 18:55

1 resposta

2

O hashing $ 2a $ blowfish não é suportado pela função crypt () da glibc sem correções. Presumivelmente, se você rastreou os patches que outras distribuições estão aplicando, você poderia reconstruir seu glibc com esse patch. Este site está vinculado a um patch para o glibc 2.10.1, com o qual você provavelmente terá que lutar para se inscrever no glibc do lenny 2.7 . Se você tiver sorte, o PHP detecta o que o crypt () pode fazer em tempo de execução, caso contrário você pode ter que recompilar o PHP também.

De acordo com os crypt docs do PHP, a partir do php5.3, o PHP tem sua própria implementação crypt () que pode manipular algoritmos hash não suportado no sistema local. Você pode obter pacotes PHP 5.3 construídos para o lenny (oldstable) do repositório php53 dotdeb .

Se você não pode usar o 5.3, então o php5.2 no repositório oldstable do dotdeb 5.2 pode ter um patch novo de hardening / suhosin para adicionar CRYPT_BLOWFISH.

    
por 01.03.2011 / 19:56