我一直在探索Twin-Bcrypt JavaScript庫,發現一個奇怪的東西。在某一時刻,我在服務器端用PHP base64_encode(openssl_random_pseudo_bytes(16))
製作了自己的鹽,並在TwinBcrypt.hash()
函數中使用它,該函數響應由於庫中規則的模式不匹配而導致salt無效。因此,模式是:JS Twin-Bcrypt鹽圖案
var SALT_PATTERN = /^\$2[ay]\$(0[4-9]|[12][0-9]|3[01])\$[.\/A-Za-z0-9]{21}[.Oeu]/;
和它看起來罰款我的鹽,除了一兩件事 - 到底是什麼 - [.Oeu]
?
我的第一個問題是,爲什麼他們從鹽期待與點結束,或Ø,或ē,或ü?據我所知openssl_random_pseudo_bytes()
生成安全CSPRNG,但由於模式JS庫不想接受它。
第二個問題 - 鹽是否有任何安全原因以/[.Oeu]/
模式結束?
我會非常感謝任何幫助,因爲沒有多少關於它的信息。
這應該被添加到Wiki。非常感謝! – Nevertheless 2015-02-23 14:04:03