高级加密标准AES候选算法之一CAST-256
高级加密标准AES候选算法之一CAST-256
CAST-256算法是于1998年发表的首轮的AES候选算法,也是CAST-128算法的扩展版本。CAST-128和CAST-256都是依照Adams设计的"CAST"设计方法,该设计方法用3种不同的基于8X32的S盒的轮函数。CAST-256的分组长度为128比特,密钥长度可为128、160、192、224和256比特,对于所有的密钥版本轮数都统一为48轮。
CAST-256为广义的Feistel结构的算法,算法一共有4个分支,全轮48轮可W分为6个前向4轮和6个后向4轮。
假定3种轮函数分别为F1,F2和F3,I=(I1||I2||I3||I4)是轮函数的32比特输入,Si(1≤i≤4)为轮函数的第i个S盒。O是轮函数的32比特输出值。F1,F2和F3的定义为:
其中kr为5比特的“移位”密钥,km为32比特的“掩码”密钥。
令β=(A,B,C,D)为128比特分组,那么A,B,C,D为3个不同的轮函数F1,F2和F3的32比特比特的输入,基于F1,F2和F3我们定义“前向4轮”为β=Q(β):
类似定义“后向4轮”为β=Q`(β):
其中krji和kmji(1≤j≤4,1≤i≤12)是第i个“4轮”中第j轮的“移位”密钥和“掩码”密钥。
CAST-256的解密算法和加密算法相同,只是轮密钥的使用顺序相反。
关于密钥扩展算法,暂未查找到相关资料。