分组密码是一种加密算法,用来加密一组明文的固定长度。此固定长度叫做包长度,分组长度是分组密码的参数,该值取决于实际应用程序的环境。针对通过计算机实现的分组密码算法,选择的分组长度是64位,其为一种折衷的选择。首先,从安全性方面考虑,分组密码长度不能太短;其次,结合分组密码的实用性,分组的程度不可过长,操作与运算均非常方便。为了加强加密的安全性,许多分组密码开始选取128位当做算法分组长度。
分组密码的加密过程在整个纯文本中,分组密码的加密过程是根据分组长度n把明文分成若干组,并对每个长度为n比特的明文消息组进行一样的加密操作,从而生成n比特的密文分组,从这里可以看出,不一样的n位明文消息分组共有2个。由于加密算法的可逆性,就是确保解密过程是可行的,每个不同的n比特明文消息包应生成唯一的密文消息包,且加密过程对应的变换叫可逆变换或非奇异变换。本质上,分组密码算法定义了由分组明文消息至相应密文消息的可逆变换。
在分组密码中得要处理问题填充。这个问题的原因是数据包加密适用于固定大小的块,但若明文的大小不是数据包长度的整数倍,则填充是一个问题。例如,分组的长度是64位,并且明文的大小仅为96位。在此种情况下,第二个数据包只有32位,并且需要填充。在数据包加密中,填充必须是可逆的,即加密时一定要添加填充字符,且在解密时可检测填充字符。常见的解决方案是向明文添加足够的零,使明文长度为分组长度的整数倍。这个问题是它可能是不可逆的。例如,对于明文字母“p”和加上一些“0”后的明文字母“p”,在解密和解密之后,都得到“p”,因此无法知道明文是否为“0”。
与经典密码不一样的是,在分组密码中,密文块的所有位都与明文块的所有位相关。这是分组密码最重要的特性:如果单个明文位发生变化,则密文块的一半平均变化。