Я пытаюсь использовать mcrypt для хранения пароля в моей базе данных. Прежде всего, это работает, но только иногда.
Вот мой код шифрования:
//Encryption/Decryption key
$key = $username.$username.$username.$username.$username;
//Encryption Algorithm
$cipher_alg = MCRYPT_RIJNDAEL_256;
$iv = mcrypt_create_iv(mcrypt_get_iv_size($cipher_alg, MCRYPT_MODE_ECB), MCRYPT_RAND);
$password = mcrypt_encrypt($cipher_alg, $key, $pass1, MCRYPT_MODE_CBC, $iv);
Затем загружаются $ username, $ iv и $ password в базу данных MySQL.
Вот мой код расшифровки:
//Encryption/Decryption key
$key = $username.$username.$username.$username.$username;
//Encryption Algorithm
$cipher_alg = MCRYPT_RIJNDAEL_256;
$dbpass = mcrypt_decrypt($cipher_alg, $key, $encpass, MCRYPT_MODE_CBC, $random);
$dbpass = trim($dbpass); // Trim the fat
$ username, $ iv и $ encpass (зашифрованный пароль) извлекаются из базы данных, а ключ создается заново с использованием имени пользователя.
Это работает, но только иногда. Я не могу понять, почему. Мое единственное предположение состоит в том, что база данных не может принимать некоторые символы, которые генерирует шифрование, например цитаты.
Любая помощь будет принята с благодарностью!