Шифрование MCRYPT и AES_DECRYPT
Есть функция EnDeCrypt (ниже пример), которая кодирует строку по ключу. Хочу сохранить эту строку в mysql, для чего создал поле типа varbinary(32). Далее вытаскивать из пхх по селекту по этому полю строку. Насколько понял в mysql есть аналог этой функции - AES_DECRYPT. Подскажите - как реализовать? (Идея: на стороне пхп формировать шифрованную строку и хранить ее в мускуле, далее когда человек вводит пароль, кодировать его и сравнивать с мускулом, проблема в том что функции в бинарном виде передают, думал шифровать в base64, но в моей версии мускула нет данной функции). Если есть готовые реализации - готов обсудить разумную оплату
CREATE TABLE IF NOT EXISTS `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `login` varchar(20) NOT NULL DEFAULT ", `passmd5` varbinary(32) NOT NULL, `name` varchar(50) NOT NULL DEFAULT ", PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;
function EnDeCrypt($text, $s = 1, $key = 'this_is_default_key'){ $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND); switch ($s) { case '0': return trim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, base64_decode($text), MCRYPT_MODE_ECB, $iv)); break; case '1': return base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv)); break; default: return FALSE; break; } }
$text = 'Hello, World!'; echo '<p>'.$text.'</p>';
$encrypt = EnDeCrypt($text); echo '<p>'.$encrypt.'</p>';
$decrypt = EnDeCrypt($encrypt, 0); echo '<p>'.$decrypt.'</p>';