Реализация openssl passwd -1 в PHP

Команда «openssl passwd -1» использует алгоритм 1 пароля BSD на основе MD5 для вычисления строкового хэша.

Пример:

openssl passwd -1
$1$./j/us.N$P2tq6IkO0Zu2d3uqkEHpv.

Как мне реализовать точно такую ​​же функциональность в PHP? Я бы хотел, чтобы это была собственная функция PHP, а не что-то, возвращаемое exec/shell_exec.


person lgc_ustc    schedule 10.03.2017    source источник
comment
хэш пароля недостаточно хорош или лучше?   -  person Erik Terwan    schedule 11.03.2017
comment
php.net/manual/en/function.md5.php служит ли это ?   -  person Jorge Campos    schedule 11.03.2017


Ответы (1)


Пример кода

<?php
define('KEY', 'scret key');

function encrypt($value)
{
    $iv = openssl_random_pseudo_bytes(16);
    $encrypt = openssl_encrypt($value, 'AES-128-CBC', KEY, 0, $iv);    
    return base64_encode($encrypt . ':::' . $iv);
}

function decrypt($data)
{
    $data = base64_decode($data);
    list($data, $iv) = explode(':::', $data);    
    return openssl_decrypt($data, 'AES-128-CBC', KEY, 0, $iv);
}


$enc = encrypt('password');

echo decrypt($enc);
person Scaffold    schedule 11.03.2017
comment
Вопрос в алгоритме хеширования, это шифрование. Если его можно расшифровать, это не хеширование. - person Jörn Zaefferer; 18.10.2017