Foros del Web » Programando para Internet » PHP »

Caracteres raros mcrypt

Estas en el tema de Caracteres raros mcrypt en el foro de PHP en Foros del Web. Hola Compañeros. Alguien sabe porque en el momento de desencriptar un cadena utilizando las librerias de PHP mcrypt me devuelve unos caracteres del tipo ��� ...
  #1 (permalink)  
Antiguo 28/05/2008, 00:04
Avatar de lcervantes  
Fecha de Ingreso: abril-2002
Mensajes: 137
Antigüedad: 17 años, 7 meses
Puntos: 0
Caracteres raros mcrypt

Hola Compañeros.
Alguien sabe porque en el momento de desencriptar un cadena utilizando las librerias de PHP mcrypt me devuelve unos caracteres del tipo ��� al final del texto desencriptado.

Es como si rellenara con esos caracteres el final de un tamaño fijo de caracteres.

Se pueden omitir que la desencriptacion devuielva esto?
Saludos,

Luis
Cervantes
  #2 (permalink)  
Antiguo 28/05/2008, 10:55
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: Caracteres raros mcrypt

Hola lcervantes,

Ese tipo de caracteres suelen imprimirse cuando la cadena que quieres imprimir viene en otra codificación que la que tienes en la pagina web.

Saludos.
  #3 (permalink)  
Antiguo 28/05/2008, 15:55
Avatar de lcervantes  
Fecha de Ingreso: abril-2002
Mensajes: 137
Antigüedad: 17 años, 7 meses
Puntos: 0
Exclamación Respuesta: Caracteres raros mcrypt

Hola Gator.
Antes que nada, gracias por contestar.

Te comento que yo no estoy usando codificaciones especiales.
Sencillamenteuso el php puro y duro.

Aqui va el codigo.

Código PHP:
    if(!extension_loaded('mcrypt')) dl('php_mcrypt.dll');
    
$input "este texto es muy secreto y lo voy a encriptar";
    
$key "llave secreta";

    
//Abrimos el modulo del algoritmo y el modo a ser utilizado.
    //$td = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
    
$td mcrypt_module_open(MCRYPT_TripleDES''MCRYPT_MODE_CBC'');
    
//Creamos el vector de inicializacion.
    
$iv mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND);
    
//Inicializa todos los buffers necesarios para la encriptacion.
    
mcrypt_generic_init($td$key$iv);
    
//Encriptamos los datos.
    
$encrypted_data mcrypt_generic($td$input);
    
$st_CodificaNumero urlencode($encrypted_data);
    echo 
"EN:" $encrypted_data "<br>";
    echo 
"EN:" convert_uuencode($encrypted_data) . "<br>";
    
//Desinicializa el modulo de encriptacion y limpia todos los buffers.
    
mcrypt_generic_deinit($td);
    
//Cierra el modulo mcrypt.
    
mcrypt_module_close($td);


    
//$td = mcrypt_module_open(MCRYPT_BLOWFISH, '', MCRYPT_MODE_CBC, '');
    
$td mcrypt_module_open(MCRYPT_TripleDES''MCRYPT_MODE_CBC'');
    
mcrypt_generic_init($td$key$iv);
    
//Desencriptamos los datos.
    
$st_DecodificaNumero urldecode($st_CodificaNumero);
    
$decrypted_data mdecrypt_generic($td$encrypted_data);
    echo 
"LONG:" strlen($decrypted_data) ."<br>";
    echo 
"DES:$decrypted_data<br>";
    
mcrypt_generic_deinit($td);
    
mcrypt_module_close($td); 
De hecho no tiene nada especial, me lo baje de la web de PHP.net
Lo curioso son los caracteres que comentaba. Pero forman parte de la cadena de desencriptada, ya que si te fijas LONG es el total de caracteres y coincide con el total de caracteres desencriotados + caracteres raros.

Encuentras alguna explicación.
  #4 (permalink)  
Antiguo 28/05/2008, 16:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 13 años, 6 meses
Puntos: 2135
Respuesta: Caracteres raros mcrypt

Mmmm prueba cambiar el urlencode / urldecode por base64encode y base64decode.

Saludos.
  #5 (permalink)  
Antiguo 12/08/2008, 14:06
 
Fecha de Ingreso: agosto-2008
Mensajes: 4
Antigüedad: 11 años, 4 meses
Puntos: 0
Respuesta: Caracteres raros mcrypt

Si solo usas caracteres alfanumericos y espacios puedes usar esta función


Código PHP:
$decrypted_data"cadena descifrada���";
// esto elimina todo lo que no sea letras, numeros o espacios
$decrypted_data preg_replace("/[^A-z ÁÉÍÓÚÑáéíóúñ0-9]/i","",$decrypted_data);
// al final obtendras "cadena descifrada" 
espero que te sirva (yo tuve el mismo problema)
  #6 (permalink)  
Antiguo 12/08/2008, 15:26
Avatar de lcervantes  
Fecha de Ingreso: abril-2002
Mensajes: 137
Antigüedad: 17 años, 7 meses
Puntos: 0
Respuesta: Caracteres raros mcrypt

Hola Egomanus.
Gracias por responder.
Efectivamente utilizo caracteres alfanumericos. Seguro que me servirá. Mi unico interes es poder encriptar las URL ya que en una zona privada no encuentro nada estético que los parámetros se vean en la URL al intentar hacer un link.

Saludos

LCervantes
__________________
LCervantes
--------------------------------------------
www.nerrots.es
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:33.