2013-05-08 58 views
1

我试图生成使用加密功能generateMac在Salesforce的HMAC值,但结果不与其他公用设施相匹配。Salesforce的创建不正确HMAC SHA1值

例如,我试图使用密钥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计算器。

回答

2

另一种选择是做一个基地64编码:

EncodingUtil.base64Encode(mac); 

我会感到惊讶,如果generateMac + convertToHex不为你工作。他们一直为我工作。我相信你已经看到,但以防万一我去了在documentation亚马逊Web服务的例子。

+0

我在“哈希我”拿出空间,我能够顶点和其他来源的输出相匹配。我的应用程序实际上并不需要空间,所以我现在可以使用它。感谢您验证我做得正确,但:) – 2013-05-16 19:15:38

+0

很高兴听到它。这是令人不安的,当黑盒子方法不正常,特别是在顶点,因为写自己的加密类是不是一种选择。 – Adam 2013-05-16 19:58:45