Estoy teniendo enormes problemas para almacenar información encriptada en una base de datos MySQL, mySam motorLuchando para almacenar información en el campo de la base de datos encrpted
que cifrar la información de esta manera:
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;
}
los datos se almacenan entonces en un blob. Cuando llego a derypt la información, parece que alrededor del 10% del tiempo se ha dañado debido al almacenamiento en la base de datos.
Puedo verificar que la base de datos es el problema ya que he ejecutado scripts para cifrar y descifrar en masa los datos sin problemas.
¿Alguna idea? Gracias por adelantado ...
[editar rutina de descifrado]
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;
}
También dudo que sea un error. Por corrupto quiero decir que cuando miro los campos descifrados son solo una cadena de caracteres sin sentido. ¿Podrías dar más detalles sobre el relleno de block pleae? – rix
Tendremos que ver su rutina de descifrado, así como más información sobre cómo almacenar los datos en la base de datos; un script de reproducción completo sería agradable. – snemarch