Resultados 1 al 9 de 9

Tema: Funciones de encriptación MySql

  1. #1
      Super Moderador
    Avatar de Josber

    Registrado
    febrero de 2015
    Mensajes
    642
    Ciudad
    Alicante

    Agradecimientos
     
    Recibidos
    340
    Enviados
    298

    Citaciones y menciones
     
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    3 Post(s)
    Poder de Reputación
    35
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Question Funciones de encriptación MySql

    ¿ Alguien ha utilizado éstas funciones ?.

    He estado haciendo pruebas y la encriptación bien, pero la desencriptación siempre me devuelve NULL

    por ejemplo:

    SQL Código:
    1. SELECT aes_encrypt('hola mundo','hola')

    me devuelve "7ebc5af2638fab23d0828131db36c6c1"

    pero al desencriptar, me devuelve "NULL"

    He probado con varias funciones de encriptación y siempre es igual.

    Muchas gracias
    Un saludo.-

    0 Not allowed!

  2. #2
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,013
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    863
    Enviados
    722

    Citaciones y menciones
     
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    Predeterminado

    Josber, que yo sepa, los valores encriptados nunca se desencriptan. Lo que se suele hacer, es tambien encriptar el valor nuevo y comprarlos. Es decir, un tío se da de alta como usuario, su contraseña se encripta y se guarda en la tabla. Cada vez que el tío accede a su cuenta, NO se desencripta su contraseña nunca. Se encripta la que viene de introducir y se compara con la guardada (ya encriptada).

    Este es (que yo sepa) el modus operandi de las encriptaciones en MySQL.

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  3. #3
      Super Moderador
    Avatar de Josber

    Registrado
    febrero de 2015
    Mensajes
    642
    Ciudad
    Alicante

    Agradecimientos
     
    Recibidos
    340
    Enviados
    298

    Citaciones y menciones
     
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    3 Post(s)
    Poder de Reputación
    35
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    Necesito desencriptarlos Kuk, es una tabla que guarda datos "sensibles", que han de ser encriptados, para más tarde, desencriptarlos y mostrarlos en un listview. Que siempre puede llegar un "listillo", abrir la tabla con un gestor de SQL, como el XAMP/WAMP, y ver los datos, o lo que es peor modifcarlos

    Un saludo.-

    Añadido despues de 13 minutos
    Mira, te pongo las dos maneras que he usado:

    En ésta me devuelve un valor NULL en LPPRO1...LPPRO5

    COBOL Código:
    1.      EXEC SQL
    2.           DECLARE cursor_tabla CURSOR FOR
    3.                   SELECT LPNUM,
    4.                         AES_DECRYPT(LPPRO1,'FaCtUrAcIóN'),
    5.                         AES_DECRYPT(LPPRO2,'FaCtUrAcIóN'),
    6.                         AES_DECRYPT(LPPRO3,'FaCtUrAcIóN'),
    7.                         AES_DECRYPT(LPPRO4,'FaCtUrAcIóN'),
    8.                         AES_DECRYPT(LPPRO5,'FaCtUrAcIóN'),
    9.                         AES_DECRYPT(LPPRO6,'FaCtUrAcIóN')
    10.                         FROM LPRO
    11.      END-EXEC.
    12.             .
    13.             .
    14.             .
    15.      EXEC SQL
    16.           FETCH cursor_tabla
    17.                INTO :LPNUM,
    18.                        :LPPRO1,
    19.                        :LPPRO2,
    20.                        :LPPRO3,
    21.                        :LPPRO4,
    22.                        :LPPRO5,
    23.                        :LPPRO6

    Y ésta otra, me dice que faltan las variables depués del INTO

    COBOL Código:
    1.      EXEC SQL
    2.           DECLARE cursor_tabla CURSOR FOR
    3.                   SELECT LPNUM,
    4.                          LPPRO1,
    5.                          LPPRO2,
    6.                          LPPRO3,
    7.                          LPPRO4,
    8.                          LPPRO5,
    9.                          LPPRO6
    10.                   FROM LPRO
    11.      END-EXEC.
    12.             .
    13.             .
    14.             .
    15.      EXEC SQL
    16.           FETCH cursor_tabla
    17.                 INTO  :LPNUM
    18.                          AES_DECRYPT(:LPPRO1,'FaCtUrAcIóN'),
    19.                          AES_DECRYPT(:LPPRO2,'FaCtUrAcIóN'),
    20.                          AES_DECRYPT(:LPPRO3,'FaCtUrAcIóN'),
    21.                          AES_DECRYPT(:LPPRO4,'FaCtUrAcIóN'),
    22.                          AES_DECRYPT(:LPPRO5,'FaCtUrAcIóN'),
    23.                          AES_DECRYPT(:LPPRO6,'FaCtUrAcIóN')
    24.      END-EXEC.


    Un saludo.-

    0 Not allowed!
    Última edición por Josber; 03.06.2015 a las 19:24 Razón: Post añadido

  4. #4
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,013
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    863
    Enviados
    722

    Citaciones y menciones
     
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    Predeterminado

    Josber, en el segundo te falta una coma:

    SQL Código:
    1. EXEC SQL
    2.           FETCH cursor_tabla
    3.                 INTO  :LPNUM    /* <== AQUI!!! */
    4.                          AES_DECRYPT(:LPPRO1,'FaCtUrAcIóN'),
    5.                          AES_DECRYPT(:LPPRO2,'FaCtUrAcIóN'),
    6.                          AES_DECRYPT(:LPPRO3,'FaCtUrAcIóN'),
    7.                          AES_DECRYPT(:LPPRO4,'FaCtUrAcIóN'),
    8.                          AES_DECRYPT(:LPPRO5,'FaCtUrAcIóN'),
    9.                          AES_DECRYPT(:LPPRO6,'FaCtUrAcIóN')
    10.      END-EXEC.

    En cuanto a lo de NULL, haces todo bien. El problema es (según he leído), la longitud de los campos encriptados. Es decir, si usas VarChar, debes saber la longitud exacta e indicarsela a la hora de decriptar. Si algo no le cuadra, devuelve NULL:

    The answer is that the columns are binary when they should be varbinary. This article explains it:

    Because if AES_DECRYPT() detects invalid data or incorrect padding, it will return NULL.

    With binary column types being fixed length, the length of the input value must be known to ensure correct padding. For unknown length values, use varbinary to avoid issues with incorrect padding resulting from differing value lengths.
    Para indicar la longitud, graba todo con la misma longitud y haz SELECT indicando esa misma longitud. Cómo se declaraban los VarChar en COBOL creo que te lo comenté. Si no te acuerdas, te lo pongo otra vez.
    Si no tienes datos muy largos, usa Char

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  5. #5
      Super Moderador
    Avatar de Josber

    Registrado
    febrero de 2015
    Mensajes
    642
    Ciudad
    Alicante

    Agradecimientos
     
    Recibidos
    340
    Enviados
    298

    Citaciones y menciones
     
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    3 Post(s)
    Poder de Reputación
    35
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    Pues mañana probaré Kuk, lo de la coma, es que al pasarlo me la he comido, pero está puesta.
    Y sí, creo que lo tengo, es lo del LEVEL 49, ¿no?

    Un saludo

    0 Not allowed!

  6. #6
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,013
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    863
    Enviados
    722

    Citaciones y menciones
     
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    Predeterminado

    Cita Iniciado por Josber Ver Mensaje
    es lo del LEVEL 49, ¿no?
    Eso es! Ya me contarás qué tal

    COBOL Código:
    1.  01  MI-VARCHAR.
    2.      49  MI-VARCHAR-L   PIC S9(9) COMP-4.
    3.      49  MI-VARCHAR-D   PIC X(nn).

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  7. #7
      Super Moderador
    Avatar de Josber

    Registrado
    febrero de 2015
    Mensajes
    642
    Ciudad
    Alicante

    Agradecimientos
     
    Recibidos
    340
    Enviados
    298

    Citaciones y menciones
     
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    3 Post(s)
    Poder de Reputación
    35
    Activista del Foro / Point Value: 0 Agradecimientos / Point Value: 0

    Predeterminado

    Nada no hay manera, ahora con esa definición de las variables, cuando el programa "entra" en la sentencia SQL de grabar, se queda en el limbo y no hace nada ...

    Un saludo

    0 Not allowed!

  8. #8
      Administrador
    Avatar de Kuk

    Registrado
    enero de 2015
    Edad
    37
    Mensajes
    2,013
    Ciudad
    Madrid

    Agradecimientos
     
    Recibidos
    863
    Enviados
    722

    Citaciones y menciones
     
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    5 Post(s)
    Poder de Reputación
    10

    Predeterminado

    Josber, puede que haya problemas con los VarChar, intenta con los Char de longitud fija y a ver qué tal. Es decir, definir los campos como Char en lugar de VarChar, definir variables de la misma longitud e intentar así.

    También te digo que yo lo que hice un día fue encriptarlos por programa, me hice 2 rutinas correspondientes a encriptado y decriptado, directmanete en COBOL, en el própio módulo. Escribía en un fichero, y abriendolo en UltraEdit, solo se veía cilandro en vez de texto Decriptar eso no hay manera como tal, ahí hay que decompilar el programa y ver qué es lo que hace, cosa que ya hablamos de hackers Senior Executive Profesionales de semejante calibre no se van a molestar con programas como el tuyo o el mío

    0 Not allowed!

    ¿Te han ayudado? NO TE OLVIDES de darle al botón
    ¿Quieres dirigirte a alguien en tu post? Notifícale con una mención, tienes 2 opciones:
    1. Haciendo clic en el icono al lado de su nick
    2. Haciendo clic en el editor al botón y escribiendo su nick.

  9. #9
      Acabo de llegar...
    J

    Registrado
    febrero de 2015
    Edad
    59
    Mensajes
    8
    Ciudad
    Catamarca

    Agradecimientos
     
    Recibidos
    2
    Enviados
    2

    Citaciones y menciones
     
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    Quoted
    0 Post(s)
    Poder de Reputación
    0

    Predeterminado

    Al encriptar una clave por ejemplo, le adjuntas una palabra que te pueda descencriptar
    eje tipico .. una tabla de usuarios

    SQL Código:
    1. INSERT INTO usuarios
    2.              (cod_usu, cla_usu, nom_usu)
    3.              VALUES ('codigousu', AES_ENCRYPT('clave', 'secreta'), 'nombre usuario')

    .. donde secretar es la palaba que usuaras para saber la clave
    .. luego en
    SQL Código:
    1. SELECT
    2.      cod_usu, AES_DECRYPT(cla_usu, 'secreta') AS cla_usu, nom_usu
    3.      cod_usu, cla_usu, nom_usu
    4.      FROM   usuarios WHERE cod_usu = 'codigousu'

    te rescatara el registro con la clave abierta .. en este caso = a 'clave'

    0 Not allowed!

Información de Tema

Usuarios Viendo este Tema

Actualmente hay 1 usuarios viendo este tema. (0 miembros y 1 visitantes)

Temas Similares

  1. [Herramienta] Me inicio en MySql
    Por Hrmcobol en el foro MySQL
    Respuestas: 5
    Último Mensaje: 11.06.2021, 15:12
  2. [Noticia] Sentencia PREPARE y EXECUTE en MySql
    Por Josber en el foro MySQL
    Respuestas: 9
    Último Mensaje: 04.05.2021, 17:26
  3. [Sintaxis] Subir *.txt grande a MySQL
    Por JuanJuan77 en el foro MySQL
    Respuestas: 4
    Último Mensaje: 02.02.2017, 11:19
  4. [Información] Funciones en las DLL-s de controles PowerCOBOL v3
    Por Kuk en el foro PowerCOBOL V3L10 (Win32)
    Respuestas: 4
    Último Mensaje: 11.11.2016, 17:27
  5. [Noticia] WampServer - MySQL ilimitado en PC
    Por Kuk en el foro MySQL
    Respuestas: 2
    Último Mensaje: 23.02.2015, 15:29

User Tag List

Permisos de Publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •