【问题标题】:Salesforce creating incorrect HMAC SHA1 valueSalesforce 创建不正确的 HMAC SHA1 值
【发布时间】:2013-05-10 10:59:38
【问题描述】:

我正在尝试使用 Crypto generateMac 函数在 Salesforce 中生成 HMAC 值,但结果与其他实用程序不匹配。

例如,我正在尝试使用键 ac67ad3b8771bf63d4fa9582845a18f921514f36 散列值 Hash me。我希望结果是66fe419859ac42ad88354dfa52f2196a26d767e1,但实际上是7d1f56c728dfefdcb9edb72b7c0c8df2acf1cae9

我的顶级代码是:

Blob mac = Crypto.generateMac('HMacSHA1', Blob.valueOf('Hash me'),
    Blob.valueOf('33a1211c0ee01511ccba1e456bb95503')); 
string hasedValue = EncodingUtil.convertToHex(mac);

我猜这个问题与转换为二进制或可能与大小写有关,但我无法匹配预期的结果。

我的预期结果基于http://hash.online-convert.com/sha1-generator 和其他几个在线 HMAC 计算器的结果。

【问题讨论】:

    标签: salesforce apex-code hmacsha1


    【解决方案1】:

    另一种选择是进行 base 64 编码:

    EncodingUtil.base64Encode(mac);
    

    如果 generateMac + convertToHex 不适合您,我会感到惊讶。他们一直为我工作。我相信你已经看过了,但以防万一我在documentation 中查看亚马逊网络服务示例。

    【讨论】:

    • 我去掉了“Hash me”中的空间,我能够匹配 apex 和其他来源之间的输出。我的应用程序实际上不需要空间,所以我现在可以忍受它。不过,感谢您验证我的操作是否正确:)
    • 很高兴听到这个消息。当黑盒方法无法正常运行时,尤其是在 Apex 中,这令人不安,因为编写自己的 Crypto 类不是一种选择。
    猜你喜欢
    • 2012-10-12
    • 2011-10-26
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    相关资源
    最近更新 更多