Skip to main content

MD5 Hashed code differs by datatype in SQLServer HASHBYTES ( algm, str) function


Issue:
 HASHBYTES ( algm, str) function generated hash code differ from regular/ other MD5 programs by the data type. 

Data: 'mypassword1'
 If you pass a variable as below as mentioned in the link in 'Ref' below,

 DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'mypassword1');
SELECT HASHBYTES('MD5', @HashThis );
GO


---- This will generate a Hashed code : 
0xBAE02911AA20CACE81224DCA98610B05

If you try the same in different MD5 generator tool like this website :  Type 'mypassword1'
http://www.miraclesalad.com/webtools/md5.php

---- the generated Hashed code will be, 
0d28e4080dc8f64fc9603639bb7aa1b9

Hashcodea are different.


Cause:
SQL Server differs the algorithm by the data type - here it is not just string , it is nvarchar / varchar - SQL Server adds up spaces or truncate them as to the size of the data.

DECLARE @HashThis nvarchar(4000);
SELECT @HashThis = CONVERT(nvarchar(4000),'mypassword1');
SELECT HASHBYTES('MD5', @HashThis );


But in MYSQL Database you can use 
select md5('mypassword1') ;  and get the right Hashcode generated.

Fix:
1. Use the right size and  data type. or

2. Use the string directly in the function parameter.
SELECT HASHBYTES('MD5', 'mypassword1' );
Go

---- the generated Hashed code will be,
0x0D28E4080DC8F64FC9603639BB7AA1B9

Ref:
To Hash a data / password in SQL Server you could use 


HASHBYTES ( '<algorithm>', { @input | 'input' } ) 

<algorithm>::= MD2 | MD4 | MD5 | SHA | SHA1 | SHA2_256 | SHA2_512 
Microsoft Link:
http://technet.microsoft.com/en-us/library/ms174415.aspx

http://www.miraclesalad.com/webtools/md5.php

Comments

Popular posts from this blog

Ohmni robot disassembly - Parts and structure inside Ohmni Telepresence Robot - Tear down

    The tablet, speakers were disconnected and removed in different video.    Ohmni robot disassembly - Parts and structure inside Ohmni Telepresence - Design - Mechonical and Electrical components .

Will Software engineer salary hit $1 million by year 2030

Are today’s Developers over loaded with too many tasks?! In 90s and till late 2000s there were many different job positions in an IT team that only do certain task. There was no Frontend engineers and backend engineers as most of the applications were thin clients in the browser side as the internet band width was very slow. There were jobs like Database Admins, Server Admins, Site Admins and so on to deal with one specific task.   Ever since the Startup culture took off again after the dotcom boom in the mid 2000s , in many cases the founder(s) had to do all tasks. Every single thing involved in the complete SDLC are done by one or two founders and hence there is more in their plate to get funding , business development etc.   And as the World internet infrastructure moved from dialup to DSL to Broadband, the browser apps became THICK CLIENTS. The corporate companies now started adopting Startup cultures into their companies IT strategy and thus Agile SDLC beca...

Agentic AI growth could make GenAI providers to charge $1000-$2000 per month - #Cathywood , here is how.

      #Cathywood predicts that as the #agenticgenai grows the #GenAI service providers like openai, gemini, Copilot, etc will be able to charge $1000 - $2000 per month to their business customers. And she adds, "this is going to happen". Why this is important: Remember #Cathywood made a monster call in 2018, predicting that Tesla would hit $4,000 in five years. And eventually Tesla hit Wood's price target, with shares closing at $816, or $4,080 on a split adjusted basis (Jan. 2021). How this could happen: #AgenticGenAi means , 1. Integrating a business service with GenAI providers like Gemini/ChatGPT as an agent and make available in the chat interface. 2. Less human interaction and more calls to the GENAI Models. Nothing totally new, its similar to 'Ok google play a song from spotify' 'Alexa, order 8 pack dove on amazon' For example, when booking a flight, instead of navigating a complex travel website, users can simply provide a text prompt...