【发布时间】:2021-09-09 05:46:02
【问题描述】:
我正在尝试将此代码转换为java,但结果不准确
private String hmacDigest(String msg, String keyString, String algo) throws Exception {
String digest = null;
SecretKeySpec key = new SecretKeySpec((keyString).getBytes("UTF-8"), algo);
Mac mac = Mac.getInstance(algo);
mac.init(key);
byte[] bytes = mac.doFinal(msg.getBytes("ASCII"));
StringBuffer hash = new StringBuffer();
for (int i = 0; i < bytes.length; i++) {
String hex = Integer.toHexString(0xFF & bytes[i]);
if (hex.length() == 1) {
hash.append('0');
}
hash.append(hex);
}
digest = hash.toString();
return digest;
}
我的 codfusion 一直在尝试
<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")>
我在java方面的知识非常有限,所以我不确定我这样做是对还是错
【问题讨论】:
-
1) 您的意思是您正在尝试将 Java 转换为 CFML,对吗? 2) 您能否提供一个用于
msg、keyString和algo值和结果的示例?不要发布真正的密钥,只发布用于开发测试的虚拟密钥。 -
基本上我正在使用这个 SDK,我已经为 CF 编写了代码,但我的签名失败了
-
用于配置,这是 java 文件
标签: coldfusion lucee