Encryption
加密算法和(密碼)散列函式之間的關係
這是一個非常基本的問題。
Blowfish 不被視為安全密碼。
但 bcrypt 是最安全的雜湊函式之一。
所以首先:雜湊函式怎麼能基於加密算法,畢竟這兩件事彼此關係不大?
第二:如果河豚是不安全的,而bcrypt是基於它的,它怎麼可能是安全的?
還有一個關於 bcrypt 的小問題:在基於 Linux 的作業系統中,雜湊程式碼是
$1 – MD5 $2 – blowfish $2a – eksblowfish $5 – SHA-256 $6 – SHA-512
“河豚”實際上是指 bcrypt,對嗎?
這只是這個想法的草圖,但我認為推理如下:
- 好的分組密碼的輸出看起來是隨機的,因此您可以將分組密碼視為 PRF。
- 如果你有一個 PRF,你可以做一些簡單的事情,比如扔掉一半的輸出,把它變成一個壓縮函式。
- 散列函式傳統上是從這種壓縮函式建構的。通常在Merkle-Damgård 構造中。
顯然,Hash 函式的安全性取決於所有這些建構塊的安全性以及其間採取的精確步驟。
即使河豚可能有弱點,輸出仍有可能具有足夠的熵,可以將其轉化為良好的壓縮函式。請注意,根據維基百科,河豚的問題在於它的小塊大小不影響 PRF 屬性。
EksBlowfish 是 bcrypt 的一個步驟。如出版物中所述。