Cobol Foro
Navegación en el Foro
Retroceder   Cobol Foro Lenguajes de Programación y demás aspectos de TI Tecnologías de Información Bases de datos
Bases de datos Instalación, administración y mantenimiento de motores de BBDD.
 
Otros temas que te pueden interesar
Tema Autor Foro Respuestas Último post
[Sintaxis] Acceso a MySql Hrmcobol PowerCOBOL (ActiveX, v4 - v11) 13 26 de julio de 2021 12:12
Me inicio en MySql Hrmcobol Bases de datos 5 11 de junio de 2021 15:12
[Sintaxis] Inner Join Mysql vicenteperrone PowerCOBOL (ActiveX, v4 - v11) 3 23 de abril de 2020 09:26
[Duda] Funciones en las DLL-s de controles PowerCOBOL v3 Kuk PowerCOBOL v3 (V3L10, Win32) 4 11 de noviembre de 2016 17:27
WampServer - MySQL ilimitado en PC Kuk Bases de datos 2 23 de febrero de 2015 15:29

Respuesta
 
Herramientas

  #1
Antiguo 3 de junio de 2015, 12:21
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492
Pregunta Funciones de encriptación MySql
0 Inactivo Inactivo

¿ Alguien ha utilizado éstas funciones ?.

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

por ejemplo:

Código SQL:
  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.-
Josber is offline   Responder Con Cita
  #2
Antiguo 3 de junio de 2015, 17:30
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

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.



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #3
Antiguo 3 de junio de 2015, 19:11
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

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

Código COBOL:
  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

Código COBOL:
  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.-

Última edición por Josber fecha: 3 de junio de 2015 a las 19:24. Razón: Post añadido
Josber is offline   Responder Con Cita
  #4
Antiguo 3 de junio de 2015, 19:56
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Josber, en el segundo te falta una coma:

Código SQL:
  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:

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



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #5
Antiguo 3 de junio de 2015, 20:13
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

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
Josber is offline   Responder Con Cita
  #6
Antiguo 3 de junio de 2015, 22:58
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

Citación del post de Josber Ver Mensaje
es lo del LEVEL 49, ¿no?
Eso es! Ya me contarás qué tal

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



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #7
Antiguo 4 de junio de 2015, 13:12
Josber
Moderador Global
Activista del Foro: Activista del Foro - Issue reason: Por aportar manuales y enriquecer  Agradecimientos: Por muchos agradecimientos de parte de los Foreros - Issue reason: Por muchos agradecimientos 
Última Actividad 20.09.2026 12:17
Posts Posts: 883
Likes enviados Enviados: 418
Likes recibidos Recibidos: 492

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
Josber is offline   Responder Con Cita
  #8
Antiguo 4 de junio de 2015, 14:43
Kuk
Administrador
Última Actividad 19.09.2026 20:11
Posts Posts: 2.500
Likes enviados Enviados: 1037
Likes recibidos Recibidos: 1207

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



NORMAS DEL FORO - para garantizar el buen funcionamiento del Foro.
¿Te han ayudado? NO TE OLVIDES de darle a
¿Quieres dirigirte a alguien en tu post? Notifícale haciendo clic en su Nick
Kuk is offline   Responder Con Cita
  #9
Antiguo 12 de julio de 2015, 02:06
Juanghi
Forero Junior
Última Actividad 08.05.2025 13:04
Posts Posts: 8
Likes enviados Enviados: 2
Likes recibidos Recibidos: 2

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

Código SQL:
  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
Código SQL:
  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'
Juanghi is offline   Responder Con Cita
Respuesta



Derechos de Publicación
No puedes publicar nuevos temas
No puedes publicar posts/responder
No puedes adjuntar archivos
No puedes editar tus posts

BB code is habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado

Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:49.
Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.