domingo, 7 de agosto de 2011

Encryptar contraseñas en MySQL y php

Programados que se respeta no deja la contraseña visible en un campo en la base de datos.

Ejemplo de la tabla

CREATE TABLE Usuarios (
  usuario varchar(20) NOT NULL,
  contrasena varchar(40) NOT NULL

Como encriptamos el campo contrasena, podemos hacerlos con sha1 o md5 los campos debe de ser de cierta logintud:

sha1:  40 caracteres
MD5 : 32 caracteres 



Cual es el seguro ?

Facil sha es mas seguro MD5 ya que calcula el cheksum SHA es de 160 bits de una cadena, mientras que MD5 la calcula de 128. Sin embargo MD5 puede ser vulnerado, la práctica es tan compleja que no merece la pena el esfuerzo.


Ejemplos
INSERT INTO usuarios VALUES('usuario',sha1('contraseña'));
INSERT INTO usuarios VALUES('usuario',MD5('contraseña'));

select coun(*)
from usuarios
where usuario=sha1('contraseña')


Ejemplo php:



 $conexion = mysql_connect("localhost", "root", "123"); 
mysql_select_db("sysdb", $conexion); 
$sql="INSERT INTO Usuarios (usuario,contrasena,)
VALUES('$_POST[usuario]', sha1('$_POST[password]'))";

mysql_query($sql)


1 comentario:

Unknown dijo...

Gracias, Esto me servira dentro de poco..