Bueno Danny veo que ahora mismo te encuentras en el mismo punto que
yo... pero... creo que esa no es la solución...al problema... y lo sé
porque, como he explicado antes (mas mal que bien), los caracteres raros
se pueden ver cuando se vuelve a poner el urlencode peeeeerooo no es
condición sinencuanon para que existan puesto que si no se pone el
urlencode no se ven peeeero están: Recuerda que puse en la
megaexplicación que con el strlen aparecían mas caracteres en el texto
desencriptado que en el texto de inicio y que el alert del javascript
cascaba -por lo menos el el 'Opera 7.20 B7'- cada vez que se intentaba
mostrar la cadena después de desencriptarla. Además... si bien es cierto
que el proceso natural que he seguido a la hora de encriptar y
desencriptar es el que he comentado antes (encripto, urlencode,urldecode
y desencript) no es el único que he probado y también da fallo.
Quien quiera puede probar este ejemplo MODIFICADO que hay en la web
oficial de php:
<?php
/* Data */
$key = 'this is a very long key, even too long for the cipher';
$plain_text = 'very important data';
/* Open module, and create IV */
$td = mcrypt_module_open ('tripledes', '', 'ecb', '');
$key = substr ($key, 0, mcrypt_enc_get_key_size ($td));
$iv_size = mcrypt_enc_get_iv_size ($td);
$iv = mcrypt_create_iv ($iv_size, MCRYPT_RAND);
/* Initialize encryption handle */
if (mcrypt_generic_init ($td, $key, $iv) != -1) {
/* Encrypt data */
$c_t = mcrypt_generic ($td, $plain_text);
mcrypt_generic_deinit ($td);
/* Reinitialize buffers for decryption */
mcrypt_generic_init ($td, $key, $iv);
$p_t = mdecrypt_generic ($td, $c_t);
/* Clean up */
mcrypt_generic_deinit ($td);
mcrypt_module_close ($td);
}
if (strncmp ($p_t, $plain_text, strlen($plain_text)) == 0) {
echo urlencode($p_t)."\n".urlencode($plain_text);
} else {
echo "error\n";
}
?>
Por favor fijaros en la siguiente linea:
echo urlencode($p_t)."\n".urlencode($plain_text);
Es línea es la que he modificado y muestra como si aplicamos el
urlencode sobre el texto primario y del desencriptado hay diferencias
si?... y nunca debería haberlas.
El ejemplo sin modificar es el que se ve en la página.
http://es2.php.net/manual/es/function.mdecrypt-generic.phpSaludos y gracias de nuevo.
El lun, 15-09-2003 a las 14:04, desa15@necso.es escribió:
Joer tio creo que ya sé que es. UrlEncode, te cambia el "_" por % y dos
dígitos hexadecimales y los espacios en blanco por un "+"
Del manual de PHP
string urlencode ( string cadena)
Devuelve una cadena en la que todos los carácteres no alfanuméricos excepto
-_. han sido reemplazados con un signo de porcentaje (%) seguido por dos
dígitos hexadecimales y los espacios han sido codificados como signos
positivos (+). Está codificado de la misma manera que los datos que se
envian desde un formulario WWW, es decir de la misma forma que el tipo
application/x-www-form-urlencoded. Esto difiere del cifrado RFC1738 (vea
rawurlencode() ) en el que por razones históricas, los espacios son
codificados como signos positivos (+ ). Esta función es conveniente para
codificar una cadena de texto que va a ser usada como parte de una consulta
de una URL, y es una forma adecuada de pasar variables a la página
siguiente:
Un saludo, Danny
---------------------------------------------------------------------
Archivo On-line:
http://www.phpes.com/via news: news://news.phpes.com/
Manual PHP en español:
http://www.php.net/manual/es/Para dar de baja la suscripción, mande un mensaje a:
lista-unsubscribe@phpes.com
--
Pablo Cristóbal Vergara Castro.
Departamento de informática.
TQR Software.
Tel: 986114640