这是 DEfusion 使用不同输入/输出格式的答案示例。我的密钥是十六进制,我的数据是较低的 ascii(所以 UTF-8 可以),我需要 base64 输出,所以我将适当的格式参数传递给 BinaryDecode 和 CharsetDecode:
<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")>