Тема: Правильное хранение паролей

Шифровать пароли хорошо, но есть много случаев когда их надо расшифровать, вот один из примеров как это можно реализовать:

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) тут только для ускорения процесса, степень прочности можно увеличить, пропорционально вашей паранойе. Так же при желании можно добавить сдвиг и все что угодно... Не вижу смысла smile Использовать достаточно просто:

$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);