HMAC SHA1 冷融合 [英] HMAC SHA1 ColdFusion

查看:20
本文介绍了HMAC SHA1 冷融合的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

请帮忙!我一直在拔头发.:)

我有一个需要 HMAC SHA1 进行身份验证的站点.它目前适用于另一种语言,但现在我需要将其移至 ColdFusion.对于我的生活,我无法让字符串匹配.任何帮助将不胜感激.

数据:https%3A%2F%2Fwww%2Etestwebsite%2Ecom%3Fid%3D5447
密钥:265D5C01D1B4C8FA28DC55C113B4D21005BB2B348859F674977B24E0F37C81B05FAE85FB75EA9CF53ABB9A174C59D98C7A61E2985026D2AA70AE4452A6E3F2F9

正确答案:WJd%2BKxmFxGWdb​​w4xQJZXd3%2FHkFQ%3d
我的回答:knIVr6wIt6%2Fl7mBJPTTbwQoTIb8%3d

两者都是 Base64 编码,然后是 URL 编码.

解决方案

自己做 HMAC-SHA1 的事情.我能说的最好的就是我找到了这个旧功能.到目前为止,我所做的工作非常有效.虽然忘记在哪里找到它,所以我不能相信作者.

对于您的 Base 64 内容...在您的加密上运行此函数,然后对返回的内容执行 cfset newString = toBase64(oldString).

Please help! I have been pulling out my hair over this one. :)

I have a site that I need to HMAC SHA1 for authentication. It currently works with another language but now I need to move it to ColdFusion. For the life of me I cannot get the strings to match. Any assistance would be much appreciated.

Data: https%3A%2F%2Fwww%2Etestwebsite%2Ecom%3Fid%3D5447
Key: 265D5C01D1B4C8FA28DC55C113B4D21005BB2B348859F674977B24E0F37C81B05FAE85FB75EA9CF53ABB9A174C59D98C7A61E2985026D2AA70AE4452A6E3F2F9

Correct answer: WJd%2BKxmFxGWdbw4xQJZXd3%2FHkFQ%3d
My answer: knIVr6wIt6%2Fl7mBJPTTbwQoTIb8%3d

Both are Base64 encoded and then URL encoded.

解决方案

Doing an HMAC-SHA1 thing myself. Best I can say is that I found this old function. Has worked great for what I am doing thus far. Forgot where I found it though so I can't credit the author.

For your Base 64 stuff... run this function on your encryption, then just do a cfset newString = toBase64(oldString) on what is returned.

<cffunction name="hmacEncrypt" returntype="binary" access="public" output="false">
   <cfargument name="signKey" type="string" required="true" />
   <cfargument name="signMessage" type="string" required="true" />
   <cfargument name="algorithm" type="string" default="HmacSHA1" />
   <cfargument name="charset" type="string" default="UTF-8" />

   <cfset var msgBytes = charsetDecode(arguments.signMessage, arguments.charset) />
   <cfset var keyBytes = charsetDecode(arguments.signKey, arguments.charset) />
   <cfset var keySpec = createObject("java","javax.crypto.spec.SecretKeySpec")  />
   <cfset var mac = createObject("java","javax.crypto.Mac") />

   <cfset key = keySpec.init(keyBytes, arguments.algorithm) />
   <cfset mac = mac.getInstance(arguments.algorithm) />
   <cfset mac.init(key) />
   <cfset mac.update(msgBytes) />

   <cfreturn mac.doFinal() />
</cffunction>

这篇关于HMAC SHA1 冷融合的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆