在AES算法的海选中,涌现了许多优秀的算法,虽然很多没有最终当选,但也同样十分优秀,今天我们就来了解其中一种竞选算法——CAST算法

CAST算法简介

CAST算法是由Carliasle Adams和Stafford Tavares分别于1996年和1998年提出的,包括CAST5(也称CAST-128)和CAST6(也称CAST-256)两种,其中CAST5是一种类似DES的置换组合网络(SPN)加密系统,而CAST6是作为AES的竞选算法提出的。

CAST5是一种12或16循环的Feistel密码,块长度为64位,密钥长度可变,从40位到128位按8位递增,并且只有当密钥长度大于80位时,才允许使用16循环。

CAST6是一种48循环的Feistel密码,块长度位128位,密钥长度可变,从128位到256位按32位递增。

CAST128和CAST5是一样的,不是指使用128位密钥。为区分不同密钥长度的操作,在算法名后需要加上密钥长度,如使用40位密钥时表示为CAST5-40,使用128位密钥时表示为CAST5-128。

CAST算法

CAST算法加密过程

CAST-128整个加密过程分为密钥预处理和信息加密两个过程。密钥预处理过程是根据输入的 128 位密钥,通过一系列的S-盒置换生成 16 对子密钥。信息加密是把输入的 64 位信息分为左右两半 L0 和 R0,通过一系列的循环变换生成 L16 和 R16,然后连接 L16 和 R16 就是输出的密文。对 Cast-128 算法解密也要分为密钥预处理和信息解密两个过程。密钥预处理和加密的时候完全相同,输入的密钥表也一样。而信息解密是把加密时的一系列循环变换倒过来,按相反的顺序从 L16 和 R16 计算出 L0 和 R0。

CAST算法

CAST-256和CAST-128的关系

CAST-256可以看作CAST-128的扩展版本,同样采用CAST算法设计过程,它的分组长度为128比特,密钥长度为256比特,采用含有4个分支的广义Feistel结构。因为CAST-128和CAST-256拥有良好的密码学性质,并被广泛地使用,使得它们受到了密码学家的广泛关注。

免责声明:素材源于网络,如有侵权,请联系删稿。