Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: XXXXXX en 26 Septiembre 2011, 16:35 pm



Título: Como funciona la encriptacion al ingresar datos a una DB?
Publicado por: XXXXXX en 26 Septiembre 2011, 16:35 pm
Estoy algo dudoso, ya que estoy intentando montar un pequeño registro en base de datos mediante formulario, pero mi duda es...

De que forma se codifican y descodifican los datos, por ejemplo el campo contraseña?


Es algo que sigo sin tener muy claro.


Gracias por adelantado.


Título: Re: Como funciona la encriptacion al ingresar datos a una DB?
Publicado por: madpitbull_99 en 26 Septiembre 2011, 16:42 pm
Para las claves se utiliza cifrado de "un solo camino", como es MD5 o SHA1.

Las claves antes de guardarlas en la base de datos se cifran a uno de los cifrados mencionados anteriormente (se guardan cifrados - hash).

A la hora de autenticarse, el usuario/cliente introduce su clave, se cifra y se compara con la que esta almacenada en la base de datos,
si coinciden, es que la clave es correcta.




Título: Re: Como funciona la encriptacion al ingresar datos a una DB?
Publicado por: WHK en 26 Septiembre 2011, 16:44 pm
Hola, guardas tu password que es 123456 en la base de datos codificado como tu quieras, digamos que md5()

php -> guarda md5(123456) -> mysql(e10adc3949ba59abbe56e057f20f883e)

Entonces como en el mysql tenemos de contraseña e10adc3949ba59abbe56e057f20f883e lo unico que tienes que hacer es pedir la conraseña original al usuario y volverla a codificar y comparar el resultado.

Código
  1. if(md5('123456') != 'e10adc3949ba59abbe56e057f20f883e'){
  2. echo 'incorrecto';
  3. }

Lo que se compara, guarda, etc es el hash no el passoriginal, un sistema nunca debe trabajar con contraseñas sino con hashes y el hash es el resultado de una codificación cualquiera, pero siempre debe codificarse de la misma forma.

Por ejemplo digamos que tengo una caja con contraseñas en mi casa entonces tu vienes y me dices que me darás tu contraseña para guardarla y me entregas el md5 de tu contraseña, ahora digamos que vuelves en 30 años mas y yo no te reconozco asi que te solicito la contraseña y tu me vuelves a dar el md5 de tu contraseña, entonces la comparo con la que está guardada y ya.

Por lo tanto cuando alguien le entrega una contraseña a un sistema web este siempre debe codificarla, y luego de eso trabajarla como si fuera el pass real y ya, tanto al guardarla como al solicitarla.

Puede ser un sha1, un rc4, un md5 o una mezcla rc4(md5($pass).sha1($pass), $pass) y así evitas las colisiones y crackeos.

--------- mad te me adelantaste xD