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

给密文分组(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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章