У меня огромные проблемы с хранением зашифрованной информации в базе данных mysql, движок mySam
Я шифрую информацию следующим образом:
function in($plaintext) {
$cipher = 'rijndael-256';
$mode = 'cbc';
$key = 'key';
$td = mcrypt_module_open($cipher, '', $mode, '');
$iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
mcrypt_generic_init($td, $key, $iv);
$crypttext = mcrypt_generic($td, $plaintext);
mcrypt_generic_deinit($td);
return $iv.$crypttext;
}
Затем данные сохраняются в большом двоичном объекте. Когда я прихожу к расшифровке информации, выясняется, что примерно в 10% случаев она была повреждена из-за хранения в базе данных.
Я могу убедиться, что проблема связана с базой данных, так как я запускал сценарии для массового шифрования и расшифровки данных без проблем.
Есть идеи? Заранее спасибо...
[программа редактирования расшифровки]
function decrypt($crypttext)
{
$cipher = 'rijndael-256';
$mode = 'cbc';
$key = '$key';
$plaintext = '';
$td = mcrypt_module_open($cipher, '', $mode, '');
$ivsize = mcrypt_enc_get_iv_size($td);
$iv = substr($crypttext, 0, $ivsize);
$crypttext = substr($crypttext, $ivsize);
if ($iv)
{
mcrypt_generic_init($td, $key, $iv);
$plaintext = mdecrypt_generic($td, $crypttext);
}
return $plaintext;
}