Wednesday, March 07, 2007

Funciones pwdEncrypt y pwdCompare

Son funciones no documentadas de SQL Server, que sirven para encriptar información (pwdencrypt) y la otra para comparar un string no encriptado (pwdcompare), con la representación de un string encriptado.

No tendremos forma de decodificar en base al string generado. Pero nos podemos apoyar de la función pwdcompare, para validar si el string que tenemos de información pertenece al string encriptado o no. Si es igual regresaria un 1, de lo contrario un 0.

Lo malo como son funciones no documentadas, están no pueden ser soportadas en futuros releases de SQL server.

Si quieres guardar la información en una tabla de lo que genera pwdencryp, puedes utilizar un campo tipo varbinary(255).

Ejemplo:
select pwdencrypt('password')
select pwdcompare('password', 0x01004816A32F93C56C37E

25B074BEA94254AE005093173
984A4947EEA0DA47328628D47
AC4737B331292CCB54352)


En el blog Alexander Gladchenko de muestra como los valores arrojados de SQL Server 2000, son aceptables para SQL Server 2005.

4 comments:

Unknown said...

¡Orale! ¿Osea que esto funciona con SQL Server 2000 tambien?

Teodulo Ortega said...

Asi es, en el blog de Alexander Gladchenko tiene una entrada donde valida que aun siguen siendo compatibles con SQL 2005. Son funciones muy practicas(chidas), lastima que no sean documentadas. :(.

Anonymous said...

Teo

Yo solo necesito saber la longitud de cada password de un login, buscando encontré el pwdencrypt y pwdcompare pero no me han ayudado
NO quiero saber los passwords pero si su longitud
mi correo es master_gonzalo@hotmail.com

jorge said...

hola Teodulo, de casualidad sabes que algoritmo de encripción se utiliza en esta función?? Gracias!