DES的解密算法和加密算法是相同的,只是子密鑰的使用次序相反斩松,即DES解密算法實(shí)際上是DES加密算法的逆。
證明:
DES的加密過程:
(1)生成子密鑰:將64比特的密鑰(有效位數(shù)56比特)進(jìn)行置換得到56比特的密鑰串,再將其分為兩個(gè)28比特的子串站绪,經(jīng)過16輪的循環(huán)左移及合并置換,最后生成16個(gè)子密鑰(k1k2.....k16)
(2)加密過程:
將64比特的明文w做初始置換得到IP(w)丽柿,再將結(jié)果分成兩個(gè)32比特的子串并分別記為LE0和RE0恢准,因此LE0 RE0=IP(w)魂挂;
根據(jù)LE0,RE0以及k1得到LE1和RE1馁筐,每一次輪函數(shù)如圖
以此類推經(jīng)過16次輪函數(shù)的迭代可得到LE16RE16涂召,交換順序得到RE16LE16,最后通過逆初始置換FP(RE16LE16)可得到64位密文C敏沉,C=FP(RE16LE16)果正;
DES的解密:DES的解密是將16個(gè)子密鑰以相反的順序加入輪函數(shù)中,重復(fù)加密的步驟及可盟迟;
(1)生成子密鑰:此時(shí)子密鑰與加密的順序相反(k16k15......k1)
(2)解密:對64比特的密文C做初始置換IP(C)秋泳,因?yàn)镃=FP(RE16LE16),
即IP(C)=IP(FP(RE16LE16))=RE16LE16攒菠,此時(shí)將結(jié)果分為兩個(gè)32比特的子串(RE16和LE16)并對它們進(jìn)行輪函數(shù)運(yùn)算迫皱,如圖:
推算可得RE16LE16經(jīng)過一次輪函數(shù)結(jié)果為RE5LE15,對RE15LE15做輪函數(shù)運(yùn)算得到結(jié)果為RE4LE14要尔,經(jīng)過16次輪函數(shù)迭代得到RE0LE0舍杜,最后RE0和LE0交換順序得到LE0RE0,經(jīng)過逆置換FP(LE0RE0)=FP(IP(w))=w赵辕,得到明文w既绩。
從上述過程可得到DES解密算法實(shí)際上是DES加密算法的逆。