2012-12-08 97 views
2

我有一個愚蠢的問題(可能已經被問):pbkdf2 VS bcrypt,輪?

人們總是比較BCrypt和之間 PBKDF2,說BCrypt是更好,因爲它是例如較慢使用GPU,卻忽視了Rounds value,espetially當我談到Python的,其中BCrypt並不強大,所以我的問題很簡單:

The tests used the excellent python library Passlib

是否值得使用BCrypt即使是小圓的價值?在Passlib,默認值是12,測試並給了我0.40 seconds,而PBKDF2給了我這是12000輪的默認值:0.142 seconds

所以舉例來說,如果我使用BCrypt只有5輪,我我會說:嘿,我的應用程序比使用12000輪的PBKDF2更安全 - 速度更快! (這似乎愚蠢我知道,對不起)。

here is the benchmark results

回答

2

注意,迭代在bcrypt的實際數目是2 ^輪,因此,例如舍= 5 - >迭代= 32,而默認的兩輪= 12 - >迭代= 4096。當比較bcrypt和pbkdf2時,當他們說「回合」時,確保它們是相同的。

關於bcrypt的一般規則是使用您可以承受的回合的最大值,就用戶登錄而言,速度並不令人厭煩。你0.4秒的測試聽起來像是你有正確的。

+1

從我發現的情況來看,今年的開發者似乎是:2012年的倍數爲1000'(12 * 1000)',bcrypt爲'2^12' –