Salesforce创建不正确的HMAC SHA1值

Salesforce创建不正确的HMAC SHA1值,salesforce,apex-code,hmacsha1,Salesforce,Apex Code,Hmacsha1,我试图在Salesforce中使用Crypto generateMac函数生成HMAC值,但结果与其他实用程序不匹配 例如,我试图使用键ac67ad3b8771bf63d4fa9582845a18f921514f36对值hash me进行散列。我希望结果是66fe419859ac42ad88354dfaf52f2196a26d767e1,但实际上是7d1f56c728dfefdcb9edb72b7c0c8df2acf1cae9 我的密码是: Blob mac = Crypto.generateM

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

例如,我试图使用键
ac67ad3b8771bf63d4fa9582845a18f921514f36
对值
hash me
进行散列。我希望结果是
66fe419859ac42ad88354dfaf52f2196a26d767e1
,但实际上是
7d1f56c728dfefdcb9edb72b7c0c8df2acf1cae9

我的密码是:

Blob mac = Crypto.generateMac('HMacSHA1', Blob.valueOf('Hash me'),
    Blob.valueOf('33a1211c0ee01511ccba1e456bb95503')); 
string hasedValue = EncodingUtil.convertToHex(mac);
我猜这个问题与二进制文件的转换有关,或者可能与case有关,但是我无法匹配预期的结果


我的预期结果基于和其他几台在线HMAC计算器的结果。

另一个选项是进行64进制编码:

EncodingUtil.base64Encode(mac);

如果generateMac+convertToHex不能为您工作,我会感到惊讶。他们一直为我工作。我相信您已经看过了,但为了以防万一,我在中查看了Amazon web服务示例。

我在“Hash me”中去掉了空格,并且我能够匹配apex和其他源之间的输出。我的应用程序实际上不需要空间,所以我现在可以使用它。谢谢你证实我做得对,不过:)很高兴听到这个消息。当黑盒方法不能正常工作时,尤其是在Apex中,这是令人不安的,因为编写自己的加密类不是一个选项。