ColdFusion HMACMD5 function

Several months ago, we were integrating our LinkShare affiliate program with our ColdFusion based e-commerce system. During that process, while preparing an MD5 encrypted HMAC message signature for transmitting transaction data to our affiliate tracking account, we encountered a problem with the included encryption algorithms in CF8.

Even though the enterprise version of CF8 includes the hmacmd5 encryption library, we couldn't get it to work, so we reverted to a Java-based implementation wrapped in a function inside one of our Utils CFC's.

Here's how we did it

HMAC MD5 Encryption Function

Place this function inside a Utilities CFC or similar, or use as an UDF


<cffunction name="HMACMD5" returntype="string" access="public" hint="Returns an MD5 encrypted message">
        <!--- You may choose the format of your output --->
<cfargument name="message" type="String" required="true">
        <cfargument name="key" type="String" required="true">
        <cfargument name="outputFormat" type="string" required="false" default="String" hint="String,base64,uBase64">

        <cfset var myMessageString = arguments.message >
        <cfset var myMessageByteArray = myMessageString.getBytes()>

        <cfset var myKey = arguments.key>
        <cfset var myKeyByteArray = myKey.getBytes()>

        <cfscript>

        key = CreateObject("java","javax.crypto.spec.SecretKeySpec");
        key.init(myKeyByteArray,"HmacMD5");

        hmac = CreateObject("java","javax.crypto.Mac");
        hmac = hmac.getInstance("HmacMd5");
        hmac.init(key);

        hmac.update(myMessageByteArray);

        hmac = hmac.doFinal();

        
</cfscript>
        
        <cfswitch expression="#arguments.outputFormat#">
            <cfcase value="base64">
                <cfreturn tobase64(hmac)>
            </cfcase>
            <cfcase value="ubase64">
                <cfreturn URLEncodedFormat(tobase64(hmac))>
            </cfcase>
            <cfdefaultcase>
                <cfreturn toString(hmac)>
            </cfdefaultcase>
        </cfswitch>

</cffunction>

Linkshare Affiliate Program with ColdFusion

One of the latest problems we had to solve while working for our full color printing and direct mail marketing company, imageMEDIA, was integration of the LinkShare affiliate program with our custom built ColdFusion e-commerce site.

Here's how we quickly and dirtily solved it.

[More]

BlogCFC was created by Raymond Camden. This blog is running version 5.9.1.001. Contact Blog Owner