簡(jiǎn)述BCrypt加密算法

Blowfish加密算法是一種對(duì)稱分組密碼算法,其擁有加密速度快、緊湊、密鑰長(zhǎng)度可變等特點(diǎn)。而今天我們文章的主角則是基于Blowfish算法而來的BCrypt加密算法。

BCrypt算法簡(jiǎn)介

BCrypt算法是專門為密碼存儲(chǔ)而設(shè)計(jì)的算法,基于Blowfish加密算法變形而來,由Niels Provos和David Mazières發(fā)表于1999年的USENIX。

BCrypt算法一個(gè)非常重要的特征就是自適應(yīng)性,可以保證加密的速度在一個(gè)特定的范圍內(nèi),即使計(jì)算機(jī)的運(yùn)算能力非常高,可以通過增加迭代次數(shù)的方式,使得加密速度變慢,從而可以抵御暴力搜索攻擊,而且不會(huì)影響已有用戶的登錄。

BCrypt加密算法

BCrypt算法的加密原理

BCrypt算法可以看作是hash算法的變種,它使用“鹽”來加密密碼。鹽是一個(gè)隨機(jī)生成的字符串,可以在密碼加密過程中使用,以確保每次加密結(jié)果都不同。BCrypt算法可以使用不同的“折疊”級(jí)別,即將多次hash迭代運(yùn)算來增加安全性,從而創(chuàng)建一個(gè)更安全的加密字符串。

簡(jiǎn)單來理解就是BCrypt算法內(nèi)部自己實(shí)現(xiàn)了隨機(jī)加鹽處理。使用Bcrypt,每次加密后的密文是不一樣的。

雖然對(duì)同一個(gè)密碼,每次生成的hash不一樣,但是hash中包含了“鹽”,在下次校驗(yàn)時(shí),從hash中取出“鹽”,“鹽”跟password進(jìn)行hash,得到的結(jié)果跟保存在DB中的hash進(jìn)行比對(duì)。

BCrypt加密算法

BCrypt算法的優(yōu)缺點(diǎn)

BCrypt算法在加密過程中可以實(shí)現(xiàn)不同的折疊級(jí)別,這讓攻擊者需要花費(fèi)更長(zhǎng)的時(shí)間來破解密碼,因此可以有效保護(hù)用戶的安全性。

此外,BCrypt還可以讓用戶在加密時(shí)輸入自定義的“鹽”,這可以進(jìn)一步增加加密的安全性。

另外,BCrypt還可以使用不同的“折疊”級(jí)別,這讓攻擊者需要花費(fèi)更多的時(shí)間來破解密碼.

但是,高度的安全帶來的問題就是性能的損失,因?yàn)樗膹?fù)雜性,導(dǎo)致了每次計(jì)算的耗時(shí)遠(yuǎn)遠(yuǎn)大于普通的加鹽hash算法。

BCrypt加密算法


BCrypt算法的安全性非常高,但其速度卻比其他同類型算法慢上很多,所以在實(shí)際應(yīng)用中并沒有其他hash算法廣泛,一般常用于保護(hù)安全要求極高的數(shù)據(jù)。

免責(zé)聲明:素材源于網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系刪稿。