Feistel 密码结构简单理解

Feistel 密码

在密码学研究中,Feistel 密码结构是用于分组密码中的一种对称结构。以它的发明者 Horst Feistel 为名。

对其简单的理解是:
      1. 给明文分组(L,R)

      2. 对R进行加密

      3. 密文=加密后的R+L(即LR的位置交换)


很好理解对吧=_+,分组加密交换即可,我们再将其复杂化:

完整的Feistel密码

这里要先知道加密的方式——轮函数F;令K1,K2,……,Kn 分别为第1,2,……,n 轮的子密钥

    给明文分组(LE0,RE0)

对于第i轮(i<=轮数n

      1. LEi+1=REi

      2. REi+1=LEi⊕F(REi+Ki+1)

循环直到得到(LE16,RE16)=(RD0,LD0),再将其置换得到密文(LE17,RE17



而解密可以看成其逆过程:要点就是轮函数倒过来使用Kn,Kn-1,……,K1

    1. 给密文分组(LD0,RD0)

对于第i轮(i<=轮数n

      1. LDi+1=RDi

      2. 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

6d81800a19d8bc3e9f444da7838ba61ea8d3450a.jpg

  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值