首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java在ColdFusion中计算HMAC-SHA256摘要

用Java在ColdFusion中计算HMAC-SHA256摘要
EN

Stack Overflow用户
提问于 2009-06-04 16:02:41
回答 2查看 7.6K关注 0票数 5

我们正在尝试用ColdFusion计算HMAC-SHA256摘要,我们使用的是HMAC CFC,但在一种情况下,与用不同语言生成的摘要相比,它会产生不同的结果-使用Ruby和PHP尝试相同的数据,并获得预期的结果。我还尝试了它所基于的CF_HMAC自定义标记,并获得了相同的结果。

据我所知,来自CF8的encrypt()支持HMAC-SHA256,但它只在企业版中可用(我们没有),甚至不能在开发版中提供给我测试。

所以我的问题是,我可以通过从CF访问Java来做到这一点吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-06-04 16:51:40

这就是我最终要做的:

代码语言:javascript
复制
secret = createObject('java', 'javax.crypto.spec.SecretKeySpec' ).Init(my_key.GetBytes(), 'HmacSHA256');
mac = createObject('java', "javax.crypto.Mac");
mac = mac.getInstance("HmacSHA256");
mac.init(secret);
digest = mac.doFinal(my_data.GetBytes());

这将提供字节数组,然后可以将其转换为字符串。

票数 11
EN

Stack Overflow用户

发布于 2013-09-25 09:00:53

以下是使用不同输入/输出格式的DEfusion答案的示例。我的密钥是十六进制,我的数据是较低的ascii (因此UTF-8也可以),并且我需要base64输出,所以我将适当的格式参数传递给BinaryDecode和CharsetDecode:

代码语言:javascript
复制
<cfset keybytes = BinaryDecode(SECRET_KEY, "Hex")>
<cfset databytes = CharsetDecode(data, "UTF-8")>
<cfset secret = createObject("java", "javax.crypto.spec.SecretKeySpec").Init(keybytes,"HmacSHA256")>
<cfset mac = createObject("java", "javax.crypto.Mac")>
<cfset mac = mac.getInstance("HmacSHA256")>
<cfset mac.init(secret)>
<cfset digest = mac.doFinal(databytes)>
<cfset result = BinaryEncode(digest, "Base64")>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/951477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档