Autor Tema: [resuelto]Charset para guardar cadena encriptada en MySql  (Leído 6276 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado edu_guerr

  • Sv Member
  • ***
  • Mensajes: 463
•Lenguaje de programación usado:Java

Que tal companeros, resulta que tengo una aplicacion en java para
encriptar-desencriptar, funciona perfectamente, el detalle es que
cuando guardo la cadena encriptada en mysql no me guarda los caracteres
que he encriptado, si no que me guarda otros, me imagino que el
problema es el "charset" de la tabla, lo tengo como utf8 que es
compatible con ascii,que es lo que utilizo para encriptar,

Saben que charset deberia usar para no tener problemas
a la hora de guardar la cadena encriptada en mysql?
« Última Modificación: marzo 19, 2010, 06:11:46 am por vlad »

Desconectado rdoggsv

  • Administrator
  • The Communiter-
  • *
  • Mensajes: 6530
  • "Once you go arch , u never go back"
    • SV CommunitY
Re:Charset para guardar cadena encriptada en MySql
« Respuesta #1 : marzo 08, 2010, 08:40:38 pm »
utf8 generic ci tendría que ser suficiente, ademas si estas cifrando me imagino que estas usando de la A..Z y de 0..9 o no ?

Tenes que hacer tu propio algoritmo o podes usar uno existente ?

Por ejemplo sha512 ?

Tírale un Show VARIABLES  LIKE '%CHARACTER_SET%';

Para que veas si tenes las de conexión en utf8
« Última Modificación: marzo 08, 2010, 08:42:40 pm por rdoggsv »

Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Charset para guardar cadena encriptada en MySql
« Respuesta #2 : marzo 08, 2010, 10:50:01 pm »
para mayor claridad deberías de poner tú función de encriptación.

Desconectado Darkness

  • The Communiter-
  • *
  • Mensajes: 2147
  • The Darkness
    • Diseño y Programaciòn Web Profesional
Re:Charset para guardar cadena encriptada en MySql
« Respuesta #3 : marzo 09, 2010, 07:52:48 am »
Yo asi defino el campo...  claro que mi cifrado no es la gran onda...XD



Field            TYPE            Collation
------------   ------------   -----------------
PASSWORD   TINYTEXT     utf8_general_ci


Seria mejor ver la forma que encriptas asi como dice vlad...
La Muerte Simplemente es el Despertar de Un Sueño Lleno de Falsedades e hipocrecias.
"Larga Vida Al Heavy Metal"

Iron Maiden Discografia DD

Desconectado edu_guerr

  • Sv Member
  • ***
  • Mensajes: 463
Re:Charset para guardar cadena encriptada en MySql
« Respuesta #4 : marzo 09, 2010, 09:28:02 am »
Tome parte de un codigo  lo hice  funcion,es decir , no es un codigo propio, les pondre las funciones que tengo para encriptar y desepcriptar y me ustedes me diran lo mejor.




Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re:Charset para guardar cadena encriptada en MySql
« Respuesta #5 : marzo 09, 2010, 09:34:09 am »
para mayor claridad deberías de poner tú función de encriptación.

Sin necesidad de que nos enseñe su super-secreta función de encriptación.

Podría usar algo como esto http://iharder.sourceforge.net/current/java/base64/. Lo que haces es convertir el objeto binario a base64 con lo que solo utiliza caracteres ASCII. Así podes usar un tipo VARCHAR o CHAR en la base de datos y luego utilizas la misma cláse para convertir de BASE64 a lo que necesitas :)

Con esto te evitas el lío de estar guardando caracteres en formato raro.


Desconectado vlad

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 6351
    • Qualium.net
Re:Charset para guardar cadena encriptada en MySql
« Respuesta #6 : marzo 09, 2010, 10:01:50 am »
Sin necesidad de que nos enseñe su super-secreta función de encriptación.

Podría usar algo como esto http://iharder.sourceforge.net/current/java/base64/. Lo que haces es convertir el objeto binario a base64 con lo que solo utiliza caracteres ASCII. Así podes usar un tipo VARCHAR o CHAR en la base de datos y luego utilizas la misma cláse para convertir de BASE64 a lo que necesitas :)

Con esto te evitas el lío de estar guardando caracteres en formato raro.

[modo troll]Claro, omitamos mencionar el overhead producido por almacenarlo en Base64 y el proceso extra de codificacion/descoficacion en Base64[/modo troll]

:D fuera de eso seria realmente bueno averiguar la causa exacta, en lo personal me iria por usar un campo binario y evitar todos los problemas, pero realmente al final lo mejor será lo que te funcione primero :)

Desconectado mxgxw

  • Global Moderator
  • The Communiter-
  • *
  • Mensajes: 5665
  • Starlet - 999cc
    • mxgxw
Re:Charset para guardar cadena encriptada en MySql
« Respuesta #7 : marzo 09, 2010, 10:13:03 am »
[modo troll]Claro, omitamos mencionar el overhead producido por almacenarlo en Base64 y el proceso extra de codificacion/descoficacion en Base64[/modo troll]

:D fuera de eso seria realmente bueno averiguar la causa exacta, en lo personal me iria por usar un campo binario y evitar todos los problemas, pero realmente al final lo mejor será lo que te funcione primero :)

Si es Java, podría implementar la interfaz Serializable y guardar directamente el objeto en un BLOB como vos decis. Y luego utilizar las funciones Serialize y Deserialize para cargar el objeto en la base de datos :)

Sería lo más optimo.