基于SHA-256的分组密码算法SHACAL-2
SHACAL-2为分组加密算法,其基于Hash算法SHA-256设计,该算法沿袭单向Hash函数的形式来描述算法。SHACAL-2算法的分组长度为256比特,包括64步,密钥长度最大为512比特,建议使用长度不小于128比特的密钥。
对任意长度为256比特的明文P=A0||B0||C0||D0||E0||F0||G0||H0,相应的256比特的密文C记为A64||B64||C64||D64||E64||F64||G64||H64。加密函数的第i步描述如下:
解密函数的第i步描述如下:
Ki表示32比特的子密钥,Coni表示32比特的每步的常数,步操作中用到的函数如下:
SHACAL-2的密钥长度最大是512比特,当长度小,512比特时,要在后面填充足够多,0使得填充后的长度是512比特。填充后的长为512比特的密钥记为K=K0,K1,……,K15,密钥扩展算法如下: