分组加密的基础
大多数分组密码结构本质上都是基于feistel网络结构,所以,了解feistel密码结构对于学期其余加密算法是有帮助的。算法
加密的过程
在feistel网络中,加密的各个步骤成为轮(Round),整个加密的过程就是进行若干次轮的循环。下图是一轮的计算流程。安全

一轮的具体计算步骤以下:网络
- 将输入的数据等分为左右两部分;
- 将输入的右侧直接发送到输出的右侧;
- 将输入的右侧发送到轮函数;
- 轮函数根据右侧数据和子密钥,计算出一串看上去是随机的比特序列;
- 将上一步获得的比特序列与左侧数据进行XOR运算,并将结果做为加密后的左侧。
那么整个feistel的构造过程,以下左所示函数

若是用公式描述,能够这样加密
- 讲明文分红两部分(L0, R0)
- 每一轮进行以下操做: Li+1 = Ri Ri+1 = Li⊕F(Ki, Ri)
影响因素
- 块的大小:(Li+Ri)大的块会提升安全性,可是会下降加解密的速度,一般块大小使用64和128bit
- 密钥的大小
- 子密钥的生成算法
- 轮函数F的复杂度
- 循环次数
那么不一样的算法,也就是上面影响因素设置的不一样,固然这只是基础原理,后面会结合某一具体算法来讲明。图片
参考:《图解密码计算》it