2013-05-08 55 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