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

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