giovedì 18 ottobre 2012

Hash MD5 con Sql Server

In sql server esiste la funzione HashBytes che prende in input 2 parametri:
  • L'algoritmo usato;
  • La Stringa di cui calcolare l'hash.
Per cui scrivendo

select HashBytes('MD5','carlo')
>> 0x6E6BC4E49DD477EBC98EF4046C067B5F

Abbiamo il risultato in bytes, per ottenere invece il valore in varchar non funziona il classico metodo CONVERT dell'sql  ma bisogna utilizzare la funzione fn_varbintohexstr definita nel master.


select SUBSTRING(master.dbo.fn_varbintohexstr(HashBytes('MD5', 'ciao')), 3, 32);
>> 6e6bc4e49dd477ebc98ef4046c067b5f

Si noti che è fondamentale il passaggio per la funzione fn_varbintohexstr altrimenti il substring si applicherebbe a dei bytes e non a delle stringhe con risultati errati.
Esempio:


select substring(HashBytes('MD5','ciao'),3,32); 
>> 0xC4E49DD477EBC98EF4046C067B5F


Nessun commento:

Posta un commento