2011-04-25 114 views
2

我打算使用類似於Amazon AWS samples的代碼來驗證已簽名的API請求。因此,用戶會碰到這樣的:用於爲HMAC SHA256簽名生成密鑰的Perl代碼?

use Digest::SHA qw(hmac_sha256_base64); 
my $digest = hmac_sha256_base64 ($request, $self->{SecretKey}); 

並附加$digest作爲參數傳遞給他們的請求URI。服務器端將使用相同的算法從客戶端URI創建一個摘要,並將其與客戶端發送的值進行比較。

我找不到的是Perl支持在生成HMAC SHA256摘要時生成正確長度的SecretKey。

對於我的亞馬遜的AWS帳號,我正在給一個40 ASCII字符base64編碼字符串。

如何爲我的客戶生成適當的密鑰?

回答

1

我建議你使用PBKDF2算法。 PBKDF2 =「基於密碼的密鑰推導函數(#2)」。它在PKCS#5中定義(RFC 2898)。這是從密碼派生密鑰的推薦方式。你也需要鹽。一個典型的迭代次數爲1000

This page說,它有PBKDF2的Perl實現。我沒有嘗試過。

顯然也有Crypto::PBKDF2,但揹負着你可能不希望依賴。


編輯

我只是試圖安東尼蒂森的perl程序的PBKDF2 - 它的偉大工程。簡單,容易。

+0

謝謝。我想你指的是http://www.ict.griffith.edu.au/anthony/software/pbkdf2.pl但我沒有爲$密碼。我要生成給定用戶的訪問密鑰(這我已經遞出一個獨特的共享密鑰。有沒有涉及到API登錄,所以我只需要創建一個隨機的內部的「密碼」作爲我的輸入PBKDF2 ? – pfarber 2011-04-25 19:57:48