FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Sobre el uso de la función HASH
Buenas. Estoy trabajando con una base de datos hecha en FB 2.5. Hurgando por esos mundos de Dios he venido a dar con la función HASH(); sinceramente desconocía que estuviera implementada en el motor y me ha parecido muy interesante.
Dado que la base de datos a la que me refiero usa varios campos con información sensible (datos personales o números de cuentas bancarias) me pareció interesante desde el principio la posiblidad de encriptar o cifrar de alguna forma esta información de manera que si la base de datos es "asaltada" por cualquiera la información no sea facilmente accesible. Sobre como guardar la información no tengo problema; he comprendido desde el principio como hacerlo: Sin embargo no entiendo como podría recuperar la información. Por ejemplo: Tengo guardada en una tabla un campo Nombre que contiene (sin cifrar ni nada) el valor ÁNGEL. Si hago un HASH sobre esa celda me devuelve el valor 12987292. Ahora bien, ¿cómo hago para que al hacer un SELECT sobre esa celda se recupere el valor original ÁNGEL? He esatdo mirando por aquí y en otras webs y no veo como poder hacerlo. |
#2
|
||||
|
||||
Hash no devuelve un cadena cifrada/encriptada, sino un valor que sirve para comprobar que la cadena no ha sido modificada.
Ejemplo, imagina un campo blob donde se ha guardado una imagen: hash("campoimagen") devuelve, ejemplo: 42342342 Alguien edita la imagen y la guarda, se puede comprobar su hash: hash("campoimagen") devuelve, ejemplo: 4432u42222 Es distinto, quiere decir que la imagen ha sido editada. |
#3
|
||||
|
||||
Hash NO ES SUBSTITUTO DE UN ALGORITMO DE ENCRIPTACION.
---- Es increíble el inmenso daño que tutoriales de "seguridad" le han hecho a la comunidad!!! --- Que es un hash? https://en.wikipedia.org/wiki/Hash_function Cita:
Hash *precisamente* esta diseñado para *evitar* "recuperar la información". Osea, no son "reversibles". Eso derrota su proposito. Si vas a encriptar, debes usar un algoritmo de *encriptacion*. Nota como "hash" no es parecido ni a palos a "encrypt". Hashing puede ser parte de los *pasos* en la encriptacion. Un cipher, por el contrario: https://en.wikipedia.org/wiki/Cipher Cita:
Pero CUAL algoritmo de encriptacion? Mas importante aun, usa una libreria ya hecha y probada, no lo "inventes". https://paragonie.com/blog/2016/02/h...ssword-in-2016 Cita:
LibSodium es considerado una de las mejores librerias y esta disponible para Delphi! https://download.libsodium.org/doc/b...ges/index.html
__________________
El malabarista. |
#4
|
||||
|
||||
Muchas gracias a los dos. Efectivamente la confusión se debe a un error de concepto. Amplío mi pregunta: ¿Existe una función similar en FB al crypt/decrypt de MySQL?
|
#5
|
||||
|
||||
Creo que la versión 3 sí trae, para versiones anteriores, mira esto.
|
#6
|
||||
|
||||
Lo que leo de ese articulo es acerca de encriptar la BD (completa) o su metadata, no los datos especificos de la aplicacion.
Con todo, no necesitas nada especial como soporte en la BD. Manda directo la cadena encriptada desde tu app, idealmente con un prefijo que exprese que algo+salt+value usaste, como: Cita:
__________________
El malabarista. |
#7
|
||||
|
||||
Cita:
Cita:
Cita:
Última edición por Angel.Matilla fecha: 07-09-2017 a las 10:03:41. |
#8
|
||||
|
||||
Mira esto: http://delphi.jmrds.com/node/95
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Tablas Hash | godel | Lazarus, FreePascal, Kylix, etc. | 3 | 19-02-2008 11:40:03 |
codigo hash | maco2007 | Varios | 4 | 20-10-2007 17:01:04 |
Calcular hash md5 | Lepe | Trucos | 1 | 10-05-2007 15:11:58 |
Hash | RaulChemical | Varios | 1 | 07-09-2004 20:10:11 |
¿Hash or not Hash? | hgiacobone | Varios | 5 | 17-07-2003 19:43:26 |
|