国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

DES加密算法的過程分析研究

2018-02-26 08:11余啟航李斌勇楊雄凱
關(guān)鍵詞:明文加密算法解密

◆余啟航 李斌勇 楊雄凱 姚 瑤

DES加密算法的過程分析研究

◆余啟航 李斌勇 楊雄凱 姚 瑤

(成都信息工程大學(xué)網(wǎng)絡(luò)空間安全學(xué)院 四川 610225)

本文圍繞DES算法的加密問題,分析了DES算法的明文分組加密和子密鑰生成過程。針對DES所涉及的核心算法模塊,分別對IP初始置換、子密鑰獲取、E盒與S盒擴(kuò)展、異或運(yùn)算、P盒置換和逆初始置換模塊進(jìn)行了深入地研究與設(shè)計(jì)。在此基礎(chǔ)上給出DES的部分核心算法的輸入與輸出實(shí)現(xiàn),并對其安全性進(jìn)行了分析。本文所開展的研究,為深入理解DES加密算法和常規(guī)應(yīng)用加密問題,提供了可行的參考。

DES;子密鑰;置換;加密算法

0 引言

DES加密解密算法最初由美國IBM公司研究人員所設(shè)計(jì)發(fā)明,且為第一個公開的商用密碼算法標(biāo)準(zhǔn),自誕生以來便得到了ISO的一致認(rèn)可。DES是分組密碼算法的典型代表,它的明文分組長度為64bits,密鑰長度為64bits,其中包括有8bits的奇偶校驗(yàn),因此有效密鑰長度為56bits。DES加密解密算法使用的過程相同,且可以隨時均都可以進(jìn)行變動。它們其中有極少數(shù)被認(rèn)為是易破解的弱密鑰,但是很容易拋開它們不使用,因此其自身安全性主要依賴于有效密鑰。由于DES算法使用最大為64bits的邏輯運(yùn)算以及標(biāo)準(zhǔn)算術(shù),它的子密鑰產(chǎn)生較為容易,可以適用于當(dāng)前大部分計(jì)算機(jī)當(dāng)中,因此近三十多年以來,其在保密通信密碼算法的研究使用中,扮演著極其重要的作用。

1 DES算法分析

DES算法加密過程首先先對明文分組進(jìn)行操作,需要加密的明文分為每塊64bits的固定大小。如圖1所示左右兩部分分別為64bits的明文分組加密過程和其16個子密鑰生成的過程。

圖1 DES加密算法流程

2 DES核心算法模塊

2.1 IP初始置換

IP初始置換,在第一輪運(yùn)算之前執(zhí)行,對輸入的分組采用如表1所示的IP初始變換,按照從左向右、從上向下進(jìn)行置換。

表1 IP初始置換

2.2子密鑰獲取流程

子密鑰的獲取流程如圖2所示。

圖2 子密鑰獲取流程

Step1:此處,用戶輸入 64 位的密鑰。根據(jù)密鑰置換表PC-1,將 64 位變成 56 位密鑰(此處去掉了奇偶校驗(yàn)位)。

Step2:PC-1 置換得到的56 位密鑰。此處密鑰被分為前28位 C0 和后28位 D0。分別對它們進(jìn)行循環(huán)左移,C0 左移得到 C1,D0 左移得到 D1。

Step3:將 C1 和 D1 合并變成 56 位。然后通過PC-2表進(jìn)行壓縮置換,得到此輪的 48 位子密鑰 K1。

Step4:再對 C1 和 D1 進(jìn)行相同的左移和壓縮置換,獲取下一輪的子密鑰……一共進(jìn)行16輪,于是可以得到 16 個 48 bits的子密鑰。

2.3 E盒擴(kuò)展

E盒擴(kuò)展置換,則是將右半部分32bits按照8行4列方式依次排列,得到一個8*4的二維矩陣,然后根據(jù)如表2所示的E盒擴(kuò)展置換表擴(kuò)展為8*6的二維矩陣。

表2 E盒擴(kuò)展

2.4異或運(yùn)算

將P盒置換的結(jié)果與最初的64bits分組的左半部分異或,然后左、右半部分交換,接著開始另一輪。

2.5 S盒擴(kuò)展

當(dāng)產(chǎn)生了48bits密鑰后就可以和明文進(jìn)行異或運(yùn)算,便可得到48bits的密文。再開始下輪的S盒迭代運(yùn)算,其功能是把6bit數(shù)據(jù)變?yōu)?bits數(shù)據(jù),每個S盒是一個4行、16列的表。每個S盒的使用方法為:S盒收到6bits的輸入,6bits的第1個bit和最后1個bits構(gòu)成的2位二進(jìn)制為該S盒行號,中間的4bits二進(jìn)制為該S盒的列號,然后根據(jù)行號和列號查S盒定義表得到對應(yīng)的值(通常為十進(jìn)制),該值就是S盒變換的輸出,并轉(zhuǎn)化為二進(jìn)制。

2.6 P盒置換

S盒代替運(yùn)算之后,輸出32bits,作為F函數(shù)最后一個變換P盒置換的輸入。將該 32bits位數(shù)據(jù)進(jìn)行P盒置換,置換后得到一個仍然是 32 bits的結(jié)果,此處可得F函數(shù)的輸出值。

2.7 逆初始置換

DES完成16輪變換后,得到64bits數(shù)據(jù)作為IP-1逆初始置換的輸入,經(jīng)過IP-1逆初始置換表(如表3所示),64bits輸入數(shù)據(jù)位置重新編排,就得到64bits的密文。

表3 逆初始置換

3 DES核心算法實(shí)現(xiàn)

3.1通過UnitoHex函數(shù)將unicode字符轉(zhuǎn)換為16進(jìn)制

def UnitoHex(string):

return_string=''

for i in string:

return_string+="%02x"%ord(i)

return return_string

輸入:unicode字符串

輸出:十六進(jìn)制數(shù)據(jù)流

3.2通過_CodeIP函數(shù)對密文或明文初始置換

def _CodeIP(self,code):

changed_code=''

for i in range(64):

changed_code+=code[ip[i]-1]

return changed_code

輸入:明文或密文

輸出:對明文或密文初始置換后的64bit數(shù)據(jù)

3.3通過_KeyIP函數(shù)對密鑰初始置換。

def _KeyIP (self,key):

changed_key=''

for i in range(56):

changed_key+=key[pc1[i]-1]

return changed_key

輸入:初始密鑰

輸出:對密鑰初始置換后的56bit數(shù)據(jù)

3.4通過_EBox函數(shù)進(jìn)行E盒擴(kuò)展置換

def _EBox(self,code):

return_list=''

for i in range(48):

return_list+=code[e[i]-1]

return return_list

輸入:32bit數(shù)據(jù)

輸出:E盒擴(kuò)展置換后的48bit數(shù)據(jù)

3.5通過_Sbox函數(shù)進(jìn)行S盒代替選擇置換

def _SBox(self, key):

return_list=''

for i in range(8):

row=int(str(key[i*6])+str(key[i*6+5]),2) raw=int(str( key[i*6+1])+str(key[i*6+2])+str(key[i*6+3])+str(key[i*6+4]),2)

return_list+=self._toByte(s[i][row][raw],4)

return return_list

輸入:48bit數(shù)據(jù)

輸出:S盒代替選擇置換后的32bit數(shù)據(jù)

3.6通過_Pbox函數(shù)進(jìn)行P盒置換

def _PBox(self,code):

return_list=''

for i in range(32):

return_list+=code[p[i]-1]

return return_list

輸入:32bit數(shù)據(jù)

輸出:P盒置換后的32bit數(shù)據(jù)

3.7通過_Xor函數(shù)對數(shù)據(jù)和子密鑰進(jìn)行異或

def _Xor(self,code,key):

code_len=len(key)

return_list=''

for i in range(code_len):

if code[i]==key[i]:

return_list+='0'

else:

return_list+='1'

return return_list

輸入:E盒擴(kuò)展置換后的48bit數(shù)據(jù)和PC-2的48bit子密鑰。

輸出:異或后的48bit數(shù)據(jù)。

4 安全性分析

由于DES算法中只用到64bits密鑰中的其中56bits密鑰,而第8、16、...64bits中的8個bits并未參與DES運(yùn)算,可以發(fā)現(xiàn)即DES的安全性是基于除8、16、...64bits以外的其余56bits的排列組合才可以得到保證的。因此,在實(shí)際進(jìn)行保密通信中,應(yīng)盡量避免使用第8、16、24等bits作為有效數(shù)據(jù)位進(jìn)行加密解密,以免在進(jìn)行保密通信的系統(tǒng)中產(chǎn)生數(shù)據(jù)被破譯的隱患。

5 結(jié)束語

DES加密解密算法較為復(fù)雜,其中用到多次不同置換方式,以及進(jìn)制的轉(zhuǎn)換和有效位的采用等,這給實(shí)現(xiàn)此算法帶來了一定的難度。但是也正是因?yàn)榇?,它的安全性相比其他一般密碼算法的安全性較高。在未來進(jìn)一步研究中,應(yīng)著力研究DES有效位的使用,以及完善加密解密的過程和簡便其算法的實(shí)現(xiàn)過程,以增強(qiáng)其安全性,使之能更加廣泛地解決日常應(yīng)用加密問題。

[1]劉浪,周新衛(wèi).基于DES對稱加密體制的探討[J].科技廣場,2012.

[2]方亮.DES加密算法IP模塊實(shí)現(xiàn)[D].電子科技大學(xué),2011.

[3]張芯苑.基于python的加密解密算法實(shí)現(xiàn)與研究[J].紡織報告,2017.

[4]徐洪波,李穎華.DES加密算法在保護(hù)文件傳輸中數(shù)據(jù)安全的應(yīng)用[J].信息網(wǎng)絡(luò)安全,2009.

[5]張溫泉,趙紅敏,郝曉東.一種高速高安全性的DES算法設(shè)計(jì)[J].微電子學(xué)與計(jì)算機(jī),2014.

[6]張峰,鄭春來,耶曉東. DES加密算法的FPGA實(shí)現(xiàn)[J]. 現(xiàn)代電子技術(shù),2008.

四川省教育廳重點(diǎn)項(xiàng)目(17ZA0069)、成都信息工程大學(xué)科研基金資助項(xiàng)目(KYTZ201618)。

猜你喜歡
明文加密算法解密
炫詞解密
解密“一包三改”
炫詞解密
基于整數(shù)矩陣乘法的圖像加密算法
基于混沌系統(tǒng)和DNA編碼的量子圖像加密算法
奇怪的處罰
混沌參數(shù)調(diào)制下RSA數(shù)據(jù)加密算法研究
奇怪的處罰
基于小波變換和混沌映射的圖像加密算法
四部委明文反對垃圾焚燒低價競爭