我正在尝试使用Crypto generateMac函数在Salesforce中生成HMAC值,但结果与其他实用程序不匹配。
例如,我正在尝试使用键Hash me
对值ac67ad3b8771bf63d4fa9582845a18f921514f36
进行哈希处理。我希望结果为66fe419859ac42ad88354dfa52f2196a26d767e1
,但实际上是7d1f56c728dfefdcb9edb72b7c0c8df2acf1cae9
。
我的顶点代码是:
Blob mac = Crypto.generateMac('HMacSHA1', Blob.valueOf('Hash me'),
Blob.valueOf('33a1211c0ee01511ccba1e456bb95503'));
string hasedValue = EncodingUtil.convertToHex(mac);
我猜这个问题与转换为二进制或从二进制转换有关,或者与case有关,但是我无法匹配预期的结果。
我的预期结果基于http://hash.online-convert.com/sha1-generator和其他几个在线HMAC计算器的结果。
答案 0 :(得分:2)
另一种选择是进行base 64编码:
EncodingUtil.base64Encode(mac);
如果generateMac + convertToHex不适合您,我会感到惊讶。他们一直都在为我工作。我确定你看过了,但以防我在documentation中查看亚马逊网络服务示例。