Тема: Правильное хранение паролей
Шифровать пароли хорошо, но есть много случаев когда их надо расшифровать, вот один из примеров как это можно реализовать:
class cipher {
private $securekey, $iv;
function __construct($secret_key) {
$this->securekey = hash('sha128',$secret_key,TRUE);
$this->iv = mcrypt_create_iv(16);
}
function encrypt($input) {
return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $this->securekey, $input, MCRYPT_MODE_ECB, $this->iv));
}
function decrypt($input) {
return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $this->securekey, base64_decode($input), MCRYPT_MODE_ECB, $this->iv));
}
}
sha128 и mcrypt_create_iv(16) тут только для ускорения процесса, степень прочности можно увеличить, пропорционально вашей паранойе. Так же при желании можно добавить сдвиг и все что угодно... Не вижу смысла Использовать достаточно просто:
$cipher = new cipher('youre secret passphrase');
$encryptedtext = $cipher->encrypt("this line must be encrypted");
echo "encrypt = $encryptedtext<br /> \n";
$decryptedtext = $cipher->decrypt($encryptedtext);
echo "decrypt = $decryptedtext<br /> \n";
var_dump($cipher);