Hola compañeros.
Resulta que estoy encriptando datos con mcrypt pero no puedo almacenar estos datos en una base de datos mysql, la cual posee cotejamiento utf8_general_ci
Probé de todo ya, de poner los archivos .php en ansi, en utf8, en utf8-sin-bom, etc. Pero no hay caso, se almacenan algunos caracteres solamente, e incluso quedan campos vacíos.
Tengo montado esto en un desarrollo con mvc, pero este código de ejemplo puede ser útil para ilustrar el caso:
Código PHP:
<?php
$clave = "clave";
$texto = "Texto base para encriptar";
echo "<b>Texto Original:</b> " . $texto . "\n<p>";
function encripta($key, $text){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text,MCRYPT_MODE_ECB, $iv);
return $crypttext;
}
function desencripta($key,$crypttext){
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext,MCRYPT_MODE_ECB, $iv);
return $decrypttext;
}
$texto_encriptado = encripta($clave, $texto);
echo "<b>Encrypted Text: </b>" . $texto_encriptado . "<br />";
echo "<b>UnEncrypted Text: </b>" . desencripta($clave, $texto_encriptado);
?>
¿Como debo tratar la codificacion de caracteres para este caso, les ha pasado alguna vez?
Les agradezco de antemano su ayuda.