Ir al contenido


Foto

CLAVES (PASSWORD) ENCRIPTADAS


  • Por favor identifícate para responder
6 respuestas en este tema

#1 JRichard

JRichard

    Advanced Member

  • Miembros
  • PipPipPip
  • 67 mensajes

Escrito 20 marzo 2014 - 05:48

Hola, alguien por casualidad sabe de algún método para encriptar un campo de una tabla. Tengo una tabla USUARIO que tiene un campo clave para que el usuario pueda acceder a la aplicación y quisiera saber como encriptar este campo de manera que esta clave no pueda ser vista ni por el Administrador de Base de Datos. He leído algo sobre un método MD5 algo así no se si estoy en lo correcto. Espero alguien me pueda ayudar! (y).
  • 0

#2 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 20 marzo 2014 - 07:03

Saludos.

De manera nativa, hasta donde conozco, las versiones actuales de Firebird (2.5-) no ofrecen encriptamiento.  Como bien mencionas se debe realizar dicha tarea desde la aplicación, si usas delphi puedes realizar una búsqueda en el foro y encontraras distintas formas, creo que nuestro amigo Seoane ha publicado varias rutinas.
  • 0

#3 seoane

seoane

    Advanced Member

  • Administrador
  • 1.259 mensajes
  • LocationEspaña

Escrito 20 marzo 2014 - 07:37

Pues aquí mismo tienes un ejemplo:
http://delphi.jmrds.com/?q=node/80

  • 0

#4 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 20 marzo 2014 - 08:27

Algunos puntos para aclarar:
1) Se llama cifrado, y descifrado. El término encriptar no es apropiado, e invito a dejar ese mal hábito de seguir difundiendolo.
2) Las contraseñas NO SE DEBERIAN cifrar. Si se cifra es que se puede revertir el proceso por lo cual no es deseable en términos de seguridad. Si por alguna cuestión la base de datos es robada o copiada. Tarde o temprano el algoritmo de cifrado puede romperse y obtener la información original.

MD5 es un algoritmo de reducción basado en hash. Como todo algoritmo de reducción, NO CIFRA Y NO ES INVERTIBLE. Por lo que no es posible dado la cadena MD5 obtener el original. Lo que se obtiene es una cadena de texto "ilegible" que identifica de manera inequívoca el contenido original. El más mínimo cambio del contenido devuelve una cadena totalmente diferente.

Gracias a esa particularidad de irreversibilidad es que es una buena alternativa que aporta de más seguridad y puede aprovecharse para que en lugar de almacenar la contraseña, se registre su MD5. Luego cada vez que el usuario intenta iniciar sesión, se calcula el MD5 del texto y se lo compara con el almacenado, si es idéntico entonces la contraseña es válida.

Saludos,
  • 0

#5 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 20 marzo 2014 - 11:48

Yo uso una función muy sencilla para cifrar las claves, utilizando la unit IdHashMessageDigest:


delphi
  1. uses
  2. IdHashMessageDigest;
  3. // ....
  4.  
  5. function HashMD5(const Str: string): string;
  6. var
  7.   MD5: TIdHashMessageDigest5;
  8. begin
  9.   MD5 := TIdHashMessageDigest5.Create;
  10.   try
  11.     Result := LowerCase(MD5.HashStringAsHex(Str))
  12.   finally
  13.     MD5.Free
  14.   end
  15. end



Saludos
  • 0

#6 Sergio

Sergio

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.092 mensajes
  • LocationMurcia, España

Escrito 21 marzo 2014 - 03:00

Wilson, eso no es cifrar, cifrar es algo reversible, si sabes la clave puedes recuperar tu texto.

Lo que se hace con las claves -a no ser que seas un descuidado y almacenes las claves de verdad cifradas, muy mala idea- es un "hash" del texto, que es como unos "digitos de control" peor en texto: Tecleas "hola", la función de hash lo convierte a algo como "sfkj349t308rhfg", por ejemplo, y eso es lo que se almacena, NUNCA se almacena "hola" ni en texto plano (bueno, algún tonto aparece de vez en cuando por las noticias) ni siquiera cifrado.

Cuando intentas logearte y pones otra clave, digamos "caracola", el sistema le pasa el MD5 y consigue otro hash, digamos "304ft283475": si coincide con el hash guardado, casi casi seguro al 100% que ha puesto la misma palabra, y le dejas entrar, pero nadie puede conseguir la clave sabiendo el hash almacenado, ni el webmaster ni nadie.

Algoritmos para hacer un hash de un texto hay muchos, el mas sencillo es quizás el MD5, aunque hoy dia es poco seguro para según que cosas -es demasiado "reversible" digamos- y suele usarse más SHA1 o mejor el SHA256, que digamos es el hash "actualizado".
  • 0

#7 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 21 marzo 2014 - 07:13

Wilson, eso no es cifrar, cifrar es algo reversible, si sabes la clave puedes recuperar tu texto.

Lo que se hace con las claves -a no ser que seas un descuidado y almacenes las claves de verdad cifradas, muy mala idea- es un "hash" del texto, que es como unos "digitos de control" peor en texto: Tecleas "hola", la función de hash lo convierte a algo como "sfkj349t308rhfg", por ejemplo, y eso es lo que se almacena, NUNCA se almacena "hola" ni en texto plano (bueno, algún tonto aparece de vez en cuando por las noticias) ni siquiera cifrado.

Cuando intentas logearte y pones otra clave, digamos "caracola", el sistema le pasa el MD5 y consigue otro hash, digamos "304ft283475": si coincide con el hash guardado, casi casi seguro al 100% que ha puesto la misma palabra, y le dejas entrar, pero nadie puede conseguir la clave sabiendo el hash almacenado, ni el webmaster ni nadie.

Algoritmos para hacer un hash de un texto hay muchos, el mas sencillo es quizás el MD5, aunque hoy dia es poco seguro para según que cosas -es demasiado "reversible" digamos- y suele usarse más SHA1 o mejor el SHA256, que digamos es el hash "actualizado".


Tienes toda la razón amigo Sergio, en el sentido estrictamente criptográfico el procedimiento que uso no cifra, lo que hace es obtener el Hash de la clave.

Saludos
  • 0




IP.Board spam blocked by CleanTalk.