云计算百科
云计算领域专业知识百科平台

基于Blowfish和CAST的分组加密算法Blow-CAST-Fish

基于Blowfish和CAST的分组加密算法Blow-CAST-Fish

Blow-CAST-Fish算法简介

Blow-CAST-Fish算法是一种Feistel结构的对称加密算法,结合了Blowfish和CAST-128(C.Adams S.Tavares-128)两种算法的优点,算法实现简单快速,且安全性更强。使用了基于密钥的S盒、基于轮数的轮函数和基于子密钥的循环移位操作,使算法具有强大的抗线性分析和差分分析的能力。

Blow-CAST-Fish算法参数

Blow-CAST-Fish算法是一种Feistel结构的分组加密算法,输入64bit明文,经过16轮迭代运算,输出64bit密文。初始密钥长度可变,范围为32~448bit,由初始密钥通过密钥扩展算法生成18个32bit的子密钥P1,P2,…,P18(称为P盒)和4个8×32的S盒S1、S2、S3、S4,S盒的输入为8bit,输出为32bit,S盒运算为查表运算。每轮运算包括P盒的异或运算和轮函数f运算,轮函数f的核心为S盒。

Blow-CAST-Fish算法轮函数

将64bit明文分为左、右两部分,记为(L0,R0),根据如下规则计算(Li,Ri)(1≤i≤16):

设密文C=(CL,CR),CL=R16⊕P18,CR=L16⊕P17。

函数f与轮数有关,第1、4、7、10、13、16轮为f1,第2、5、8、11、14轮为f2,第3、6、9、12、15轮为f3。f1、f2和f3描述如下:

其中:“<<<”表示循环左移操作,“⊕”表示异或运算,“-”表示模232减法运算,“+”表示模232加法运算,“‖”为连接符,F为f的部分操作。I为32bit数据,由高位到低位分成4个字节,分别为Ia、Ib、Ic、Id。Si[It]表示对S盒Si进行查表运算,输入为It,输出为Si[It]。

算法加密流程如下图所示。

Blow-CAST-Fish加密算法

Blow-CAST-Fish解密算法

Blow-CAST-Fish密钥扩展算法

(1)首先用固定的字符串将一数组和个一盒依次初始化。字符串由十六进制数组成。例如:

P1=0x243f6a88

P2=0x85a308d3

P3=0x13198a2e

P4=0x03707344

…………

(2)用密钥的第一个32位与P1异或,用密钥的第二个32位与P2异或,依次类推,直到密钥的所有位(当密钥长度为最大值448比特时,密钥的最后一个比特与P14异或),周期性地循环密钥的所有位,直到整个P数组与密钥异或完为止。

(3)用Blow-CAST-Fish算法加密64比特全零数据块,其子密钥为(2)中描述的子密钥,S盒为(1)中的初始值。

(4)第(3)步的输出为64比特,分成两,32比特字,分别替换P1和P2。

(5)用Blow-CAST-Fish算法加密第(3)步的输出,其密钥为最新的子密钥(P1和P2在第(4)中已更新)。

(6)用第(5)步的输出替换P3和P4。

(7)重复上述操作,直到P数组的所有元素及4个S盒全部被连续变化的Blow-CAST-Fish算法的输出所替换。

为了产生所需的全部子密钥,总共需要迭代512次。在应用时这些子密钥全部预先计算并存储下来�不需要多次执行推导过程。

Blow-CAST-Fish算法总结

是一个典型的Feistel结构分组密码算法,共有16轮。算法输入为64比特明文,输出为64比特密文。密钥比特可变,范围为32-448比特。算法综合了Blowfish和CAST-128的优点。采用的CAST-128的优点包括

(1)轮函数与轮数相关

(2)在每一轮使用了循环左移操作

采用的Blowfish的优点包括

(1)32-448比特的可变密钥长度

(2)S盒的产生与密钥相关

(3)密钥扩展过程

赞(0)
未经允许不得转载:网硕互联帮助中心 » 基于Blowfish和CAST的分组加密算法Blow-CAST-Fish
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!