Feistel 密码结构简单理解
来源:互联网 发布:软件项目绩效考核指标 编辑:程序博客网 时间:2024/06/05 20:47
Feistel 密码
在密码学研究中,Feistel 密码结构是用于分组密码中的一种对称结构。以它的发明者 Horst Feistel 为名。
对其简单的理解是:
给明文分组(L,R)
对R进行加密
密文=加密后的R+L(即LR的位置交换)
很好理解对吧=_+,分组加密交换即可,我们再将其复杂化:
完整的Feistel密码
这里要先知道加密的方式——轮函数F;令K1,K2,……,Kn 分别为第1,2,……,n 轮的子密钥
给明文分组(LE0,RE0)
对于第i轮(i<=轮数n)
LEi+1=REi
REi+1=LEi⊕F(REi+Ki+1)
循环直到得到(LE16,RE16)=(RD0,LD0),再将其置换得到密文(LE17,RE17)
而解密可以看成其逆过程:要点就是轮函数倒过来使用Kn,Kn-1,……,K1
给密文分组(LD0,RD0)
对于第i轮(i<=轮数n)
LDi+1=RDi
RDi+1=LDi⊕F(RDi+Kn-i-1)
循环直到得到(LD16,RD16)=(RE0,LE0),再将其置换得到明文(LD17,RD17)
加密E(Encrypt)/解密D(Decrypt)
在DES中,加密轮数一般为16轮(n=16)
例:解密过程第二轮的输入(LD1,RD1)等于加密过程第十六轮的输出互换的值(RE15,LE15)
LE16=RE15
RE16=LE15⊕F(RE15+K16)
LD1=RD0=LE16=RE15
RD1=LD0⊕F(RD0+K16)
=RE16⊕F(RE15+K16)
=(LE15⊕F(RE15+K16))⊕F(RE15+K16) ps:D⊕D=0
=LE15⊕(F(RE15+K16)⊕F(RE15+K16))
=LE15
- Feistel 密码结构简单理解
- Python实现一个简单的Feistel结构的密码算法
- 分组密码(Feistel密码结构)
- Feistel网络结构与DES加密算法的框架简单分析
- 分布式应用程序结构简单理解
- 分布式应用程序结构简单理解
- 三层结构的简单理解
- 结构体的简单理解
- 分布式应用程序结构简单理解
- 简单理解栈帧结构
- .net三层结构的简单理解
- C#:枚举、结构与接口简单理解
- for in结构的简单理解
- 代理模式的简单理解(结构型)
- 说明feistel解密是feistel加密的逆过程
- Computer.硬盘:简单理解磁盘的物理结构
- 简单密码
- 简单密码
- SSL介绍与Java实例
- ListView的多布局显示
- jquery常用语句集锦
- session与cookie
- 深度学习与计算机视觉系列(7)_神经网络数据预处理,正则化与损失函数
- Feistel 密码结构简单理解
- web.xml中<context-param>元素详解(初始版v1.0)
- 完美解决VirtualBox文件夹共享、增强功能安装不上的问题。
- Unity四种坐标系
- 0 Crash Course In DSP
- 面向对象_抽象类练习猫狗案例
- 关于sqljoin
- 高德地图 javascript 输入提示后查询
- java基础语法