淺析Gost算法原理

Gost算法是一種由蘇聯(lián)設(shè)計的類似DES算法的分組密碼算法。它是一個由64位分組及256位密鑰的采用32輪簡單迭代型加密算法。DES算法中采用的是56位長密鑰,在密碼科學(xué)中,一個對稱密碼系統(tǒng)安全性是由算法的強度和密鑰長度決定的,在確保算法足夠強的前提下,密鑰的長度直接決定著窮舉攻擊的復(fù)雜度,即使按每秒10000億個密鑰的速度,窮舉出Gost密鑰所需的時間也是一個天文數(shù)字(約3.3394c+57年)

Gost算法原理

Gost算法采用256位長的密鑰,密鑰是由用戶輸入的,把這256位密鑰等分成8個部分,每部分32位,按一定的順序循環(huán)使用這8個密鑰,對加密數(shù)據(jù)采用64位分組,如果待加密的數(shù)據(jù)的長度大于64位,那么需要先把明文填充至64位然后加密,把它等分成左右兩部分,記為LEFT、RIGHT,各32位,Gost算法總共要進行32次迭代,在第i輪操作中,輸入為LEFT、RIGHT和加密密鑰Key(i),把left和key(i)進行模((2 ^32)+1)的加操作,所得的結(jié)果作為s-盒操作的輸入,利用s-盒進行代換。

假定left和key(i)進行模((2 ^32)+1)的加操作所得的結(jié)果為itmp,把32位的itmp等分成8塊,每塊4位,每塊的值不會超過0xf,Gost算法的s-盒共8組正和這8塊一一對應(yīng)。例如若第三塊的值為8,那么就在s-盒的第三組第8列處找到對應(yīng)的值,用這個值替換掉第三塊的原始值,完成8次s-盒替換后,把新生的8個4位的塊合并成一個32位的塊。然后把合并后的值循環(huán)左移11位形成新的itmp值,把right值和itmp值按位異或,結(jié)果存入right,交換right和left的值,到此完成一輪的操作。然后把left和right值作為下一輪操作的輸入,Gost算法一共要進行32輪類似的操作。數(shù)據(jù)的解密算法和加密的類似,只需要把密鑰逆序使用。