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

Ron Rivest這個(gè)人之前在我們的文章中多次出現(xiàn),他除了是RC系列算法的發(fā)明者之外,還是RSA算法中的“R”。今天我們就來(lái)了解一下由他設(shè)計(jì)的對(duì)稱分組加密算法——RC5加密算法。

RC5加密算法簡(jiǎn)介

RC5算法是1994年設(shè)計(jì)發(fā)明的,是一種比較“年輕”的對(duì)稱加密算法,它只使用了異或和位移等原始的運(yùn)算,輪數(shù)可變,密鑰位數(shù)可變,因此相對(duì)來(lái)說(shuō)更加簡(jiǎn)單、快速。

對(duì)于RC5來(lái)說(shuō),其中有3個(gè)可變參數(shù),分別為w/r/b。這里w是字長(zhǎng)其值可以是16、32或64對(duì)于不同的字長(zhǎng)明文和密文塊的分組長(zhǎng)度為2w位,r是加密輪數(shù),b是密鑰字節(jié)長(zhǎng)度。

RC5加密算法

RC5加密算法的加密流程

假設(shè)輸入明文塊的長(zhǎng)度為64位,在一次性初始操作中,輸入明文塊分成兩個(gè)32位塊A和B,前兩個(gè)子密鑰S[0]和S[1]分別加進(jìn)A和B,分別產(chǎn)生C和D,表示一次性操作結(jié)束。

然后開(kāi)始各輪,每一輪完成系列操作:

  1. 位異或運(yùn)算;
  2. 循環(huán)左移;
  3. 對(duì)C和D增加下一個(gè)子密鑰,先是加法運(yùn)算,然后將結(jié)果用2的w次方求模(由于這里w=32,因此為232 )。

RC5加密算法

從上圖可以看出,初始操作有兩步,然后是幾輪操作,輪數(shù)可以取0~255。也可以從中看出,一個(gè)塊的輸出是另一個(gè)塊的輸入,使整個(gè)邏輯很難破譯。

RC5加密算法的解密流程

RC5的解密流程基本與加密流程相反,將加密時(shí)的循環(huán)左移變成循環(huán)右移即可。

RC5加密算法的優(yōu)缺點(diǎn)

RC5加密算法在RSA試驗(yàn)室中的表現(xiàn)相當(dāng)不錯(cuò),加之其簡(jiǎn)單、快速的特性,執(zhí)行所需的內(nèi)存更少,目前來(lái)看算得上是一個(gè)比較不錯(cuò)的算法。但是,由于RC5屬于對(duì)稱加密算法,這就始終無(wú)法擺脫對(duì)稱加密算法的缺點(diǎn)。

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