Archive

Archive for the ‘SQL’ Category

Como crear un campo que tenga una contraseña o password en sql server?

20 febrero, 2013 Deja un comentario

Muchas gracias al Sr. Augusto.

Como siempre encontrandome con cosas nuevas cada dia o cosas que recordar, mejor ponerlo como apunte para no tener que buscar nuevamente documentacion, seguramente alguna vez te has encontrado con la pregunta de como almaceno un password en sql server? claro y es nuestro deber encriptar las contraseñas o password.
Bueno, en realidad es sencillo, lo apunto para que a la siguiente no se me vaya a olvidar otra vez.
Por alguna razon no he encontrado la documentacion con nuestro boton F1 acerca de las funciones PWDENCRYPT y PWDCOMPARE, si alguien sabe por que, pues digamelo!!!

Bien a la obra las manos,

Para almacenar un valor encriptado de manera asimetrica (que quiere decir asimetrica?, “un poco de google no les haria mal”) tendra que tener un campo con el tipo VARBINARY(longitud), en el caso de ejemplo tengo una tabla llamada

CREATE TABLE Login
(
[IdLogin] [int] IDENTITY(1,1) PRIMARY KEY,
[IdUsuario] [varchar](255)NOTNULL,
[Contrasenia] [varbinary](max)NOT NULL
)

entonces para ingresar un valor se hace

insert into login(IdUsuario, contrasenia)values(‘b@a.com’,PWDENCRYPT(’123456′))

y para buscar o hacer match del usuario cuando este se logee sera…

select *from login where IdUsuario =‘b@a.com’andPWDCOMPARE(’123456′, contrasenia)= 1

Si esta consulta devuelve un registro, obviamente devolvera el registro segun los criterios de la clausula where, pero si no devuelve nada entonces el “usuario o la contraseña no es correcta“.

Para ver mas claramente el uso de estas funciones vea

DECLARE @PASS VARBINARY(MAX)
SELECT @PASS = PWDENCRYPT(’123456′)
SELECT @PASS
SELECT ‘PASS OK!!!’ WHERE PWDCOMPARE(’123456′, @PASS) = 1

Categorías:SQL