Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/08/2012, 16:37
wlinker
 
Fecha de Ingreso: agosto-2012
Mensajes: 39
Antigüedad: 11 años, 8 meses
Puntos: 5
Ejemplo: Comparar columna usuario y convertirla a MD5 en tiempo de ejecucion

Hola hoy tube la necesidad de realizar una consulta que me permitiera identificar el usuario de una tabla de usuarios que coincidiera con una cadena MD5, ésto para poder pasar a través de VB.Net el usuario en formato MD5 a un Webbrowsers, ésto con la finalidad de poder recuperar cierta información de Ms SQL Server y poder visualizarla en formato Web.

Las razones por las cuales ésta aplicación funcionará así carecen de relevancia en ésta publicación.

yo tengo entonces como ejemplo que el usuario Wlinker mantiene la cadena MD5
correspondiente: 5c1c3546a119bff751b99a71fc741f09

y en mi base de datos yo tengo entre otros campos:
+ id
+ username

y no almaceno en ningun momento el valor MD5, entonces para poder obtener el username correspondiente a la cadena MD5 generé (con apoyo de compañeros de trabajo) la siguiente consulta.



Código SQL:
Ver original
  1. SELECT DISTINCT username FROM [basedatos].[dbo].[tabla_datos]
  2. WHERE SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5',CAST(username AS VARCHAR(100))  )),3,32 ) = 'CADENA-MD5'

con esto se es capaz de recorrer la base de datos y hacer las comparaciones ahí mismo, con lo cuál me ahorro el proceso de recorrer toda la base de datos desde mi frontend e ir usuario por usuario hasta encontrar el valor indicado.

Publico ésto porque no encontré en ningun lugar ésto que logramos generar y espero que sea útil para alguien más en algun momento, las adaptaciones, mejoras, etc. son asunto de cada quién, solo cumplo con compartir y estoy abierto a comentarios, gracias.

con lo cual al hacer la consulta:

Código SQL:
Ver original
  1. SELECT DISTINCT username FROM [basedatos].[dbo].[tabla_datos]
  2. WHERE SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5',CAST(username AS VARCHAR(100))  )),3,32 ) = '5c1c3546a119bff751b99a71fc741f09'

recuperaré el username

Wlinker