证明Fesitel 结构的正确性
来源:互联网 发布:淘宝卖家进入 编辑:程序博客网 时间:2024/06/05 03:50
在加密算法中,Fesitel 结构应用在很多领域中,实现对信息的加密,那么如何证明Fesitel 结构的正确性成为一个问题,接下来本文将证明Fesitel 结构的正确性。
推导Feistel分组加密算法解密结果的正确性。
加密过程是:明文m = LE0||RE0,进行n轮迭代。
按下列规则计算LEn||REn,1≤i≤n,轮函数为F,
LEi = REi-1,
REi = LEi-1⊕F(REi-1,Ki),
进行n轮迭代运算后,得LEn和REn,输出密文c = REn||LEn。
解密过程与加密过程采用相同的算法:密文分组c = REn||LEn = LD0||RD0。
按下述规则计算LDn||RDn,1≤i≤n,轮函数为F
LDi = RDi-1,
RDi = LDi-1⊕F(RDi-1,Kn-i+1),
进行n轮迭代运算后,得LDn和RDn,输出明文m = RDn||LDn。
只要证明RDn =LE0和LDn =RE0即可。显然,LD0= REn且RD0 = LEn,根据加、解密算法,有
LD1 = RD0 = LEn = REn-1, RD1 =LD0⊕F(RD0,Kn) = REn⊕F(LEn,Kn) = LEn-1,
LD2 = RD1 = LEn-1 = REn-2,RD2 = LD1⊕F(RE1,Kn-1) = REn-1⊕F(LEn-1,Kn-1) = LEn-2。
以此推导下去,有:
LDn-1 = RDn-2 = LE2 = RE1,RDn-1 = LDn-2⊕F(RDn-2,K2) = RE2⊕F(LE2,K2) = LE1 ,
LDn= RDn-1 = LE1 = RE0,RDn = LDn-1⊕F(RDn-1,K1) = RE1⊕F(LE1,K1) = LE0。
所以解密算法是正确的。
Fesitel 结构加密算法,加密的轮数,明文的分组长度和密钥长度等等,这些内容决定了加密算法的安全性和效率,一般来说在考虑加密算法的的安全性时,效率会相对没那么的重要。
在证明Fesitel 时候,应该注意到对于异或运算而言,我们在得到加密的密文后,将密文和密钥(逆顺序使用)进行异或运算即可得到每一轮迭代的REi,LEi足,n轮迭代后即可得到最初的明文LE0||RE0=M.
- 证明Fesitel 结构的正确性
- 补码正确性的证明
- krusal算法正确性的证明
- 如何证明程序的正确性?
- 树状数组正确性的证明、、、
- 【笔记】程序正确性的证明
- 关于AC自动机的正确性的证明
- 全排列算法的正确性证明
- 哈夫曼树构造算法的正确性证明
- 算法正确性证明三要素
- 贪心算法正确性证明
- 关于dijkstra的贪心思想的正确性的证明
- 最小生成树的prim算法贪心正确性的证明
- 关于最大流增广路径算法的正确性的证明
- 最小生成树的prim算法贪心正确性的证明
- 用归纳法证明循环不变式的正确性。
- 用循环不变式证明RB-INSERT-FIXUP的正确性
- 用循环不变式证明RB-DELETE-FIXUP的正确性
- android menu菜单设置
- 0106
- 使用CMD命令行打 jar包
- 第38课 - Qt 中的事件处理(上)
- C++ 虚函数列表应用
- 证明Fesitel 结构的正确性
- Android 开发基础课程设计---手机文件管理系统
- ServletContext与Web应用范围
- Android View源码解读:浅谈DecorView与ViewRootImpl
- vs2012注册码
- (二十三)进程——获取进程id相关函数的介绍和使用
- java正则表达式
- python Nltk 自然语言安装包安装教程
- CentOS 7 安装KVM,并创建虚拟机