簡述Blowfish加密算法

之前我們簡單了解了DES加密算法,它是一種典型的分組加密算法,而在眾多加密算法中,有一個和它類似,但是卻比它的加密速度更快的加密算法——Blowfish加密算法。

Blowfish算法

什么是Blowfish加密算法?

Blowfish加密算法是一個64位分組及可變密鑰長度的對稱密鑰分組密碼算法,可用來加密64比特長度的字符串。Blowfish加密算法具有加密速度快、緊湊、密鑰長度可變、可免費使用等特點,已被廣泛使用于諸多領(lǐng)域。

Blowfish算法流程

Blowfish和DES一樣,使用的是feistel密碼(費斯妥密碼)來進行分組加密。blowfish的分組塊大小是64bits,可變密鑰長度可以從32bits到448bits不等。

Blowfish

Blowfish需要進行16輪的feistel加密操作,大概的流程就是將P(原始數(shù)據(jù))分成左右兩部分,先拿左邊的部分和Kr 做異或操作,得出的結(jié)果調(diào)用F函數(shù),最后將F函數(shù)的輸出結(jié)果和右半部分進行異或操作。調(diào)換左右部分的位置,繼續(xù)進行這樣的操作,總共進行16輪就得到了最終的加密結(jié)果。

Blowfish算法中的F函數(shù)需要用到4個S-box,S-box的作用就是將8bits轉(zhuǎn)換成為32bits。4個S-box的數(shù)組也按照上面的流程來進行生成,從而得到最終的S-box。

Blowfish算法的特點

  • 快速:Blowfish在32位微處理器中的加密速率為每個字節(jié)26個時鐘循環(huán)。
  • 緊湊:Blowfish可以在不到5kb的內(nèi)存中執(zhí)行。
  • 簡單:Blowfish只使用基本運算,如加法、異或和表格查閱,因此很容易設(shè)計與實現(xiàn)。
  • 安全:Blowfish是變長密鑰的,最長448位,使其既靈活又安全。

Blowfish算法

Blowfish算法的缺點

Blowfish使用64位塊大?。ㄅcAES的128位塊大小相比)使它容易受到生日攻擊,特別是在HTTPS這樣的環(huán)境中。Blowfish的塊只有64bits,比較小,所以建議不要使用Blowfish來加密大于4GB的文件。

如果Blowfish算法只進行一輪加密的話,容易受到反射性弱鍵的已知明文攻擊。但是在實現(xiàn)使用中一般是16輪加密,所以不容易受到這種攻擊。但是Blowfish算法的發(fā)明人布魯斯·施耐爾(Bruce Schneier)還是建議大家遷移到Blowfish的繼承者Twofish(雙魚算法)去。

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