FAQ
Hola a todos.

Bueno mi problema radica en la utilización de las funciones tipo
mcrypt, he descubierto que, cuando se llama a diversas funciones para
desencriptar determinados datos, dichas funciones añaden caracteres
extraños al final de la cadena desencriptada. Parece ser que no soy la
única persona que tuvo este problema puesto que en la página oficial de
php, cuando se habla de las funciones mcrypt, hace un par de meses un
tal "herowekker" comentaba lo siguiente:

"mcrypt_ecb with base64_decode gave some problems, i found out
that it
had to be chopped to work:

chop(mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode($input),MCRYPT_DECRYPT));"

Podreis ver el mensaje de forma mas detallada en:

http://es.php.net/manual/es/ref.mcrypt.php

El caso es que a mi me pasa el mismo problema que a "herowekker"
pero
usando TripleDES y sin usar base64 puesto que utilizo urlencode y
urldecode.

Me gustaría saber si a alguien le ha pasado, y de ser así como
lo pudo
solucionar.

Eso es todo muchas gracias.

Search Discussions

  • Desa15 at Sep 15, 2003 at 10:59 am
    Pues la verdad es que no he usado mucho estas funciones, creo recordar que
    lo único que daba problemas con mcrypt era el intentar pasarle bits, solo
    aceptaba cadenas (pero no me hagas muhco caso, porque mi memoria no es muy
    buena).

    Lo que sí me dio problemas, es que hay un cuarto parámetro que era un
    puntero al vector de cifrado o algo así y recuerdo que eso si me daba
    problemas cuando no se lo ponía.

    Se que no resuelve tu problema, pero es lo único que puedo decirte

    Un saludo, Danny



    "Pablo C. Vergara
    Castro." Para: lista@phpes.com
    <desarrollo@tqr.biz cc:
    Asunto: [PHP-ES] Problemas a la hora de desencriptar
    15/09/2003 12:47
    Por favor, responda
    a lista






    Hola a todos.

    Bueno mi problema radica en la utilización de las funciones tipo
    mcrypt, he descubierto que, cuando se llama a diversas funciones para
    desencriptar determinados datos, dichas funciones añaden caracteres
    extraños al final de la cadena desencriptada. Parece ser que no soy la
    única persona que tuvo este problema puesto que en la página oficial de
    php, cuando se habla de las funciones mcrypt, hace un par de meses un
    tal "herowekker" comentaba lo siguiente:

    "mcrypt_ecb with base64_decode gave some problems, i found out
    that it
    had to be chopped to work:

    chop(mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode
    ($input),MCRYPT_DECRYPT));"

    Podreis ver el mensaje de forma mas detallada en:

    http://es.php.net/manual/es/ref.mcrypt.php

    El caso es que a mi me pasa el mismo problema que a "herowekker"
    pero
    usando TripleDES y sin usar base64 puesto que utilizo urlencode y
    urldecode.

    Me gustaría saber si a alguien le ha pasado, y de ser así como
    lo pudo
    solucionar.

    Eso es todo muchas gracias.


    ---------------------------------------------------------------------
    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 C. Vergara Castro. at Sep 15, 2003 at 11:09 am
    Muchas gracias Danny, si bien es cierto que no resuelve mi problema
    por lo menos veo que la gente contesta realmente rápido :-).

    El puntero del que me habla es el famoso parámetro iv que no se para
    qué carajo sirve pero efectivamente, si no lo pones, el php te muestra
    un Warning muuuuyy bonito en el que te recomienda encarecidamente que lo
    incluyas, y, como te podrás imaginar, lo tengo incluído pero el problema
    no radica en ese parámetro (vamos eso creo), sino en que encriptar
    encripta bien, después el url_encode lo hace muy bien, posteriormente el
    proceso inverso también está correcto excepto por un pequeño detalle, la
    cadena desencriptada (el texto plano) es mas grande que al principio,
    puesto que contiene la misma información que antes peeero también una
    serie de caracteres extraños que, ni yo, ni el url_decode hemos puesto
    ahí.

    Bueno muchas gracias por todo.

    El lun, 15-09-2003 a las 13:00, desa15@necso.es escribió:
    Pues la verdad es que no he usado mucho estas funciones, creo recordar que
    lo único que daba problemas con mcrypt era el intentar pasarle bits, solo
    aceptaba cadenas (pero no me hagas muhco caso, porque mi memoria no es muy
    buena).

    Lo que sí me dio problemas, es que hay un cuarto parámetro que era un
    puntero al vector de cifrado o algo así y recuerdo que eso si me daba
    problemas cuando no se lo ponía.

    Se que no resuelve tu problema, pero es lo único que puedo decirte

    Un saludo, Danny



    "Pablo C. Vergara
    Castro." Para: lista@phpes.com
    <desarrollo@tqr.biz cc:
    Asunto: [PHP-ES] Problemas a la hora de desencriptar
    15/09/2003 12:47
    Por favor, responda
    a lista






    Hola a todos.

    Bueno mi problema radica en la utilización de las funciones tipo
    mcrypt, he descubierto que, cuando se llama a diversas funciones para
    desencriptar determinados datos, dichas funciones añaden caracteres
    extraños al final de la cadena desencriptada. Parece ser que no soy la
    única persona que tuvo este problema puesto que en la página oficial de
    php, cuando se habla de las funciones mcrypt, hace un par de meses un
    tal "herowekker" comentaba lo siguiente:

    "mcrypt_ecb with base64_decode gave some problems, i found out
    that it
    had to be chopped to work:

    chop(mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode
    ($input),MCRYPT_DECRYPT));"

    Podreis ver el mensaje de forma mas detallada en:

    http://es.php.net/manual/es/ref.mcrypt.php

    El caso es que a mi me pasa el mismo problema que a "herowekker"
    pero
    usando TripleDES y sin usar base64 puesto que utilizo urlencode y
    urldecode.

    Me gustaría saber si a alguien le ha pasado, y de ser así como
    lo pudo
    solucionar.

    Eso es todo muchas gracias.


    ---------------------------------------------------------------------
    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







    ---------------------------------------------------------------------
    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
  • Desa15 at Sep 15, 2003 at 11:21 am
    Hola Pablo, podrías pegarme una cadena con esos caracteres extraños de los
    que hablas ???
    Osea, cadena a encriptar, y cadena desencriptada con los caracteres, raros,
    más que nada para probarlo aquí, y ver si se reproduce el problema.

    Has probado a recoger temporalmente el retorno de cada función en una
    variable antes de pasarlo a la siguiente función ???





    Un saludo, Danny



    "Pablo C. Vergara
    Castro." Para: lista@phpes.com
    <desarrollo@tqr.biz cc:
    Asunto: Re: [PHP-ES] Problemas a la hora de desencriptar
    15/09/2003 13:11
    Por favor, responda
    a lista






    Muchas gracias Danny, si bien es cierto que no resuelve mi problema
    por lo menos veo que la gente contesta realmente rápido :-).

    El puntero del que me habla es el famoso parámetro iv que no se para
    qué carajo sirve pero efectivamente, si no lo pones, el php te muestra
    un Warning muuuuyy bonito en el que te recomienda encarecidamente que lo
    incluyas, y, como te podrás imaginar, lo tengo incluído pero el problema
    no radica en ese parámetro (vamos eso creo), sino en que encriptar
    encripta bien, después el url_encode lo hace muy bien, posteriormente el
    proceso inverso también está correcto excepto por un pequeño detalle, la
    cadena desencriptada (el texto plano) es mas grande que al principio,
    puesto que contiene la misma información que antes peeero también una
    serie de caracteres extraños que, ni yo, ni el url_decode hemos puesto
    ahí.

    Bueno muchas gracias por todo.

    El lun, 15-09-2003 a las 13:00, desa15@necso.es escribió:
    Pues la verdad es que no he usado mucho estas funciones, creo recordar que
    lo único que daba problemas con mcrypt era el intentar pasarle bits, solo
    aceptaba cadenas (pero no me hagas muhco caso, porque mi memoria no es muy
    buena).

    Lo que sí me dio problemas, es que hay un cuarto parámetro que era un
    puntero al vector de cifrado o algo así y recuerdo que eso si me daba
    problemas cuando no se lo ponía.

    Se que no resuelve tu problema, pero es lo único que puedo decirte

    Un saludo, Danny


    "Pablo C. Vergara
    Castro." Para: lista@phpes.com
    <desarrollo@tqr.biz cc:
    Asunto: [PHP-ES]
    Problemas a la hora de desencriptar
    >
    15/09/2003 12:47
    Por favor, responda
    a lista
    >

    >



    Hola a todos.

    Bueno mi problema radica en la utilización de las funciones tipo
    mcrypt, he descubierto que, cuando se llama a diversas funciones para
    desencriptar determinados datos, dichas funciones añaden caracteres
    extraños al final de la cadena desencriptada. Parece ser que no soy la
    única persona que tuvo este problema puesto que en la página oficial de
    php, cuando se habla de las funciones mcrypt, hace un par de meses un
    tal "herowekker" comentaba lo siguiente:

    "mcrypt_ecb with base64_decode gave some problems, i found out
    that it
    had to be chopped to work:

    chop(mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode
    ($input),MCRYPT_DECRYPT));"

    Podreis ver el mensaje de forma mas detallada en:

    http://es.php.net/manual/es/ref.mcrypt.php

    El caso es que a mi me pasa el mismo problema que a "herowekker"
    pero
    usando TripleDES y sin usar base64 puesto que utilizo urlencode y
    urldecode.

    Me gustaría saber si a alguien le ha pasado, y de ser así como
    lo pudo
    solucionar.

    Eso es todo muchas gracias.


    ---------------------------------------------------------------------
    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







    ---------------------------------------------------------------------
    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


    ---------------------------------------------------------------------
    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 C. Vergara Castro. at Sep 15, 2003 at 11:36 am
    Hola de nuevo Danny ("el rápido" :-) ).

    Mira... el caso es el siguiente, la cadena en cuestión son parámetros
    típidos de URL osea
    <variable1=valor1>&<variable2=valor2>&...&<variableN=valorN> de tal
    forma que el proceso que sigo es el siguiente:

    1º Encripto
    2º urlencode de la cadena encriptada.
    3º urldecode de la cadea encriptada.
    4º Desecripto.=> En este último paso se da que lo que antes era:

    <variable1=valor1>&<variable2=valor2>&...&<variableN=valorN> ahora es

    <variable1=valor1>&<variable2=valor2>&...&<variableN=valorN><CARACTERES_RAROS>

    lo curioso de todo esto es que no suelen ser caracteres facilmente
    interpretables por el navegador (por lo menos con el opera 7.20 B7)
    porque, siempre que itento que se me muestren con un alert Javascript
    (zassss... casca el javascript), si hago un "echo" no me salen...y se ve
    sólo:

    <variable1=valor1>&<variable2=valor2>&...&<variableN=valorN>

    pero se que hay caracteres raros puesto que.. si a) si compruebo el
    strlen de la cadena desencriptada es mas grande que como era al
    principio y si vuelvo a codificar la cadena con urlencode para que me
    aparezcan tooodoos los caracteres ahí es donde se ven nuevos caracteres
    que, generalmente son, '%00' repetidos varias veces.

    Bueno espero que no os esté entrando mucho dolor de cabeza... sólo
    imaginaros lo que tengo yo encima que llevo toooda la mañana con esto y
    hasta que me di cuenta de qué era exactamente lo que pasaba...

    Venga gracias de nuevo por todo.

    Saludos.


    El lun, 15-09-2003 a las 13:21, desa15@necso.es escribió:
    Hola Pablo, podrías pegarme una cadena con esos caracteres extraños de los
    que hablas ???
    Osea, cadena a encriptar, y cadena desencriptada con los caracteres, raros,
    más que nada para probarlo aquí, y ver si se reproduce el problema.

    Has probado a recoger temporalmente el retorno de cada función en una
    variable antes de pasarlo a la siguiente función ???





    Un saludo, Danny



    "Pablo C. Vergara
    Castro." Para: lista@phpes.com
    <desarrollo@tqr.biz cc:
    Asunto: Re: [PHP-ES] Problemas a la hora de desencriptar
    15/09/2003 13:11
    Por favor, responda
    a lista






    Muchas gracias Danny, si bien es cierto que no resuelve mi problema
    por lo menos veo que la gente contesta realmente rápido :-).

    El puntero del que me habla es el famoso parámetro iv que no se para
    qué carajo sirve pero efectivamente, si no lo pones, el php te muestra
    un Warning muuuuyy bonito en el que te recomienda encarecidamente que lo
    incluyas, y, como te podrás imaginar, lo tengo incluído pero el problema
    no radica en ese parámetro (vamos eso creo), sino en que encriptar
    encripta bien, después el url_encode lo hace muy bien, posteriormente el
    proceso inverso también está correcto excepto por un pequeño detalle, la
    cadena desencriptada (el texto plano) es mas grande que al principio,
    puesto que contiene la misma información que antes peeero también una
    serie de caracteres extraños que, ni yo, ni el url_decode hemos puesto
    ahí.

    Bueno muchas gracias por todo.

    El lun, 15-09-2003 a las 13:00, desa15@necso.es escribió:
    Pues la verdad es que no he usado mucho estas funciones, creo recordar que
    lo único que daba problemas con mcrypt era el intentar pasarle bits, solo
    aceptaba cadenas (pero no me hagas muhco caso, porque mi memoria no es muy
    buena).

    Lo que sí me dio problemas, es que hay un cuarto parámetro que era un
    puntero al vector de cifrado o algo así y recuerdo que eso si me daba
    problemas cuando no se lo ponía.

    Se que no resuelve tu problema, pero es lo único que puedo decirte

    Un saludo, Danny


    "Pablo C. Vergara
    Castro." Para: lista@phpes.com
    <desarrollo@tqr.biz cc:
    Asunto: [PHP-ES]
    Problemas a la hora de desencriptar

    15/09/2003 12:47
    Por favor, responda
    a lista





    Hola a todos.

    Bueno mi problema radica en la utilización de las funciones tipo
    mcrypt, he descubierto que, cuando se llama a diversas funciones para
    desencriptar determinados datos, dichas funciones añaden caracteres
    extraños al final de la cadena desencriptada. Parece ser que no soy la
    única persona que tuvo este problema puesto que en la página oficial de
    php, cuando se habla de las funciones mcrypt, hace un par de meses un
    tal "herowekker" comentaba lo siguiente:

    "mcrypt_ecb with base64_decode gave some problems, i found out
    that it
    had to be chopped to work:

    chop(mcrypt_ecb(MCRYPT_BLOWFISH,$key,base64_decode
    ($input),MCRYPT_DECRYPT));"

    Podreis ver el mensaje de forma mas detallada en:

    http://es.php.net/manual/es/ref.mcrypt.php

    El caso es que a mi me pasa el mismo problema que a "herowekker"
    pero
    usando TripleDES y sin usar base64 puesto que utilizo urlencode y
    urldecode.

    Me gustaría saber si a alguien le ha pasado, y de ser así como
    lo pudo
    solucionar.

    Eso es todo muchas gracias.


    ---------------------------------------------------------------------
    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







    ---------------------------------------------------------------------
    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


    ---------------------------------------------------------------------
    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







    ---------------------------------------------------------------------
    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
  • Desa15 at Sep 15, 2003 at 12:03 pm
    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
  • Pablo C. Vergara Castro. at Sep 15, 2003 at 12:19 pm
    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.php

    Saludos 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

Related Discussions

Discussion Navigation
viewthread | post
Discussion Overview
groupphp-general-es @
categoriesphp
postedSep 15, '03 at 10:45a
activeSep 15, '03 at 12:19p
posts7
users2
websitephp.net

People

Translate

site design / logo © 2022 Grokbase