2010-09-07 66 views
2

我被要求將一個登錄表單指向一個外部網站,其中登錄名和密碼應該出現在URL中,並且應該通過Blowfish加密。我被提供了一個「密鑰」,其格式爲:"nnn-nnnssssssssssssssssssssssssnnnnnn"其中n是一個數字,s是一個字母(其中24個)。PHP Blowfish加密

從PHP文檔看來,用crypt()觸發Blowfish加密需要提供特定格式的鹽,以「$ 2a $」開頭,但這不是我提供的密鑰格式。這是否意味着我需要提供我自己的鹽?如果是的話,我提供的鑰匙有什麼意義?

+0

你明白了嗎? – 2010-11-07 03:04:18

回答

1

crypt是一個散列函數,它不用於加密。要真正加密你需要的mcrypt或純php的實現(我記得在梨中看到的東西)。

+2

+1哈希函數的最糟糕的名字。 ;) – deceze 2010-09-07 08:52:30

+0

我可能制定了錯誤的東西,「哈希」可能是正確的術語。 – stef 2010-09-07 08:57:24

1

嘗試以此爲鹽:$ 2A $ NN $ nnnnsssssssssssnnn $(沒有工作)

這不是一個哈希,然後你將不得不使用的mcrypt或PEAR庫:

http://pear.php.net/package/Crypt_Blowfish

實施例:

http://www.chilkatsoft.com/p/php_blowfish.asp

我沒有看到IV所以模式將必須ECB(弱)和WH ole事情將是關鍵。

+0

是的,這就是我所做的,但這給了我$ 2a $ 08 $ HBHfHB.yHBa2MQyvKhLrcOjQY22GCusbxK2NT2ClnfNHDh4r61gmO作爲測試字符串的散列值,但這與它們側面的散列結果不同,它是p/R0ePNz - afaik它們不能是河豚哈希值。 – stef 2010-09-07 09:18:11

+0

@stef感謝您的反饋。看到我編輯的答案。 – 2010-09-07 19:32:23