
天后算法采用256位长的密钥,密钥是由用户输入的,将这256位密钥等分为8个部分,每个部分32位,按照一定的顺序循环使用这8个密钥,对于加密数据采用64位分组,如果要加密的数据长度大于64位,则需要先将明文填充到64位,然后加密,将其分为左右两部分,记录为LEFT,RIGHT,每个32位,Gost算法总共需要进行32次迭代,在I轮操作中,输入为LEFT,RIGHT和加密密钥Key(i),将left和key(i)进行模具(2^32)+1)加操作,所得结果为S-箱操作的输入,使用S-箱进行替换。

假设left和key(i)进行模具(2^32)+1)加上操作得到的结果是itmp,把32位的itmp等分成8块,每块4位,每块的值不会超过0xf,gost算法的s-箱一共8组与这8块一一对应。例如,如果第三块的值是8,那么在s-箱的第三组第8列中找到相应的值,用这个值替换第三块的原值,完成8次s-箱替换后,将新生的8个4位的块组合成32位的块组。然后将合并的值循环到左边,移动11位,形成一个新的itmp值,将right值和itmp值按相同的位置或,然后将其存储在right中,交换right和left值,从而完成一个回合的操作。然后将left和right值作为下一个回合,gost算法总共需要进行32轮类似的操作。解密数据算法和加密数据相似,只需密钥反序使用。