1. 程式人生 > >bcrypt加密演算法原理和應用

bcrypt加密演算法原理和應用

Question

剛開始接觸這種加密方式,而又對加密原理不瞭解時,很容易產生這種疑問❔:

    對一個密碼,bcryptjs每次生成的hash都不一樣,那麼它是如何進行校驗的?

Basic verification

    雖然對同一個密碼,每次生成的hash不一樣,但是hash中包含了salt(hash產生過程:先隨機生成salt,salt跟password進行hash);
    在下次校驗時,從hash中取出salt,salt跟password進行hash;得到的結果跟儲存在DB中的hash進行比對,compareSync中已經實現了這一過程:bcrypt.compareSync(password, hashFromDB);