How cool would it be, being able to create the same MD5 hash as ColdFusion, directly in the MS SQL RDMBS?
I know there’s been quite some demand for this function, most people create the MD5 hash in ColdFusion and then pass it the Database, this mean a couple more round trips to the db, which we prefer to avoid at anytime.
We’ll make some assumptions in this article to make things easier, and they are;
Ready to get started?
The first thing to do is go into your MS SQL database and create the following function that creates the hash and return a string value.
CREATE FUNCTION [dbo].[fn_getHash] ( -- Add the T-SQL statements to compute the return value here DECLARE @characterValue VARCHAR( 255 ) SELECT @characterValue = ' SELECT @hexadecimalString = '0123456789abcdef' WHILE (@i <= @length) DECLARE @tempInt INT SELECT @tempInt = CONVERT(INT, SUBSTRING( @binaryValue, @i, 1 ) ) SELECT @characterValue = @characterValue + SELECT @i = @i + 1 END SET @returnValue = UPPER( @characterValue ) -- Return the result of the function END |
Now the ColdFusion code to test and make sure it’s the same hash as in ColdFusion.
<cfquery
name="rsHash"
datasource="[your dsn here]">
SELECT [dbo].[fn_getHash] ( 'clickfind.com.au is cool!' ) AS myHash
</cfquery>
<cfoutput>
<p>
Hash from MS SQL: <strong>#rsHash.myHash#</strong><br>
Hash from ColdFusion: <strong>#hash( "clickfind.com.au is cool!", "MD5" )#</strong><br>
Are they the same? <strong>#yesNoFormat( not compareNoCase( hash( "clickfind.com.au is cool!", "MD5" ), rsHash.myHash ) )#</strong>
</p>
</cfoutput>
How easy is that? I know it will certainly benefit our code not having to go to CF to create a hash.
Of course it’s pretty easy to change the function so that it can create the same hash for the following algorithms MD2, MD4, SHA and SHA1.
I hope you enjoyed this article, any questions, feel free to contact coldfusion-tutorial@clickfind.com.au make sure you refer to the original document as we might not know which one you are referring to.
Feel free to copy and distribute this tutorial, but make sure you reference the author and sponsor.
Author: Taco Fleur
This article was sponsored by clickfind