張芯苑
基于python的加密解密算法實現(xiàn)與研究
張芯苑
(南京金陵科技學院,江蘇南京 210000)
本文對重要文本信息的加密解密工作進行了研究。首先介紹了密碼學技術(shù)的相關(guān)概念及其研究狀況,并重點闡述了RSA算法、數(shù)據(jù)加密標準DES、BASE64的相關(guān)原理知識?;趐ython語言,設置上述三種算法的參數(shù)流程圖,仿真實現(xiàn)了三種算法,并對RSA算法和DES算法進行了優(yōu)化,形成新的混合算法。仿真結(jié)果表明,RSA算法因為擁有兩個密鑰,安全性得到保障,但是速度較慢,DES算法速度上表現(xiàn)出色,但是由于所有環(huán)節(jié)使用相同的密鑰,容易被攻破,而新的混合算法綜合他們的優(yōu)缺點,既增強了安全性,又提高了算法的效率。
加密解密;PYTHON;DES;RSA算法;BASE64
隨著信息社會的到來,利用信息資源,人們產(chǎn)生了巨大的利益,但是,多起信息泄露事故的發(fā)生,不得不讓我們正視信息安全的考驗。
目前,在網(wǎng)絡上傳輸數(shù)據(jù)文件進行交流成了我們的習慣,便利之余,在傳輸過程中一些數(shù)據(jù)圖像很有可能遭受黑客等其他一些惡意迫害者的攻擊,導致數(shù)據(jù)誤傳、錯傳,甚至內(nèi)容被修改或者被截走。網(wǎng)絡密碼學的誕生極大地保障了網(wǎng)絡傳輸?shù)陌踩裕蓪ΨQ加密與解密算法DES和非對稱加密算法RSA組成的數(shù)據(jù)加密的誕生極大地豐富了網(wǎng)絡密碼學的內(nèi)容,保障了網(wǎng)路數(shù)據(jù)傳輸?shù)陌踩浴?/p>
本文中的加密與解密算法包括三種實現(xiàn)方式,除了基本base64算法調(diào)用實現(xiàn)以外,重點在于DES算法和RSA算法?;趐ython設計了三種算法,并且實現(xiàn)DES和RSA新的混合算法。
1.1 密碼體制的分類
密碼體制指由加密解密共同組成的信息保密機制,分為對稱密碼體制和非對稱密碼體制兩類。
1.1.1 對稱密碼體制
對稱密碼體制是指加密的密鑰和解密密鑰用同一個密鑰的體制,用公式表達就是:
加密過程:C=E(M、K)
解密過程:M=D(C、K)
其中字母的依次是:M為明文、K為密鑰、E為機制或算法、C為密文。
本文所需實現(xiàn)的第一個算法數(shù)據(jù)加密標準DES即屬于對稱密碼體制,下一節(jié)將詳細介紹DES算法原理。
1.1.2 非對稱密碼體制
非對稱密碼體制,就是是指加密和解密密鑰用的不是同一個密鑰的體制。當中需要兩個密鑰,稱為公鑰和私鑰,兩者依次對應,并且無法互相推出。在實踐使用當中,根據(jù)需要,兩個密鑰分別用來加密和解密。
非對稱密碼體制中,主要的加密方法是公鑰密碼體制(Public Key Instructure)簡稱PKI,PKI算法成為當前信息加密技術(shù)的主流,而PKI的基礎(chǔ)就是RSA算法,在后文中我們將詳細論述并實現(xiàn)RSA算法。
1.2 DES算法詳細原理介紹
1.2.1 DES算法概述
在1977年,DES算法被NBS(即美國國家標準與技術(shù)局)采用為標準,之后在產(chǎn)業(yè)中尤其是金融業(yè)中得到大力推廣和使用,個人轉(zhuǎn)賬的信息驗證等等無不依賴它。DES算法是分組密碼的經(jīng)典代表,也是第一個公開的算法標準,它屬于對稱密碼算法。
1.2.2 DES算法設計思想和準則
DES算法根源上來說是一種將置換、代換、移位多種密碼技術(shù)綜合運用的乘積密碼。采用Feistel網(wǎng)絡結(jié)構(gòu),DES算法以64位(8 byte)密鑰為分組對數(shù)據(jù)加密,因為加密和解密過程算法相對應,架構(gòu)也相同,只是順序不同,因此使用同一個密鑰。以加密過程為例,解密過程原理不再贅述。對于64位明文的加密過程如下:
(1)經(jīng)過初始置換,將明文平均分成左右各32位的兩部分。
(2)密鑰與右半部分結(jié)合,再與左半部分結(jié)合成為新的右半部分。
(3)一開始的右半部分作為新的左部分再進行下一輪的輪換。
(4)以上過程組成一輪。這種輪換要重復16次。16輪之后,再進行終結(jié)置換。
簡單來說,DES的加密過程由加密處理、加密變換和子密鑰生成幾個部分組成。
1.3 RSA算法詳細原理介紹
1.3.1 RSA算法概述
目前為止,RSA算法是最有影響的公鑰密碼算法,能抵抗己知的幾乎所有密碼攻擊。它功能強大,既能用于數(shù)據(jù)加密也能用于數(shù)字簽名。RSA算法的安全性主要仰仗于對一個大數(shù)進行分解問題的難解性,因而后文我們對實現(xiàn)RSA算法的參數(shù)的選擇進行了重點討論。
1.3.2 RSA體制的算法過程
RSA密碼體制的實現(xiàn)使用了模n大數(shù)進行分解的運算,這里的n是兩個不同的素數(shù)(即除了自己和1以外不能被任何數(shù)整除的數(shù))p和q的乘積。RSA體制的算法具體過程如下:
首先產(chǎn)生密鑰,過程如下:(1)隨機產(chǎn)生兩個長度為K/2位的素數(shù)P和Q。(2)計算公鑰publicKey =P*Q;(publicKey是K位的長度)。
(3)隨機產(chǎn)生一個加密密鑰2≤keyE≤Φ(n)-1,其中GCD[keyE,Φ(n)]=1,即keyE和Φ(n)互質(zhì)。
注意:這是保證解密密鑰keyE×keyD mod[Φ(n)]=1有解的充要條件,Φ(n)稱為n 的歐拉函數(shù),函數(shù)值為:Φ(n)=(P-1)×(Q-1)。
(4)求解密密鑰keyD=keyE-1mod(n),keyE-1為解密密鑰keyD的逆元,這個公式原方程為[keyE×keyD mod(n)=1]。
由此公鑰、加密密鑰和解密密鑰全部產(chǎn)生[6]。
接下來,對明文加密或?qū)γ芪倪M行解密,具體的公式如下:
(1)加密: C = MkeyE mod publicKey;其中M表示明文,C表示密文。
(2)解密: M = CkeyD mod publicKey;其中M表示明文,C表示密文。
1.4 其他加密解密算法
本設計中實現(xiàn)的其他加密解密算法為base64編碼。它是我們程序開發(fā)中經(jīng)常使用到的編碼方法,DES算法的實現(xiàn)也離不開它。BASE64 用64個可以打印的字符來表示對應的二進制數(shù)據(jù),因此通常用作存儲、傳輸一些二進制數(shù)據(jù)編碼方法。
2.1 BASE64算法仿真測試結(jié)果及分析
轉(zhuǎn)換的時候,將三位的數(shù)據(jù),先后放入一個24位的緩沖區(qū)中,先來的占高位。數(shù)據(jù)不足3位的補0。然后,每次取出6個bit,按照其值選擇ABCDEFGH IJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz0123456789+/中的字符作為編碼后的輸出。不斷進行,直到全部輸入數(shù)據(jù)轉(zhuǎn)換完成。
當出現(xiàn)最后一組不足3位的情況時,如果還剩兩個,在最后結(jié)果后補上1個“=”;剩一個的話,就在結(jié)果后面加2個“=”,這樣來實現(xiàn)數(shù)據(jù)還原的正確性。
用我們設計的base64算法仿真結(jié)果如圖2.1。
圖2.1 ‘man’算法實現(xiàn)圖
2.2 DES算法的仿真測試結(jié)果
DES實現(xiàn)對字符的加密和加密,首先輸入8位。密鑰的長度決定了該算法的安全性,因而在實際中應選用長度更長的56位密鑰。8位密鑰位:12345678;然后輸入要加密的內(nèi)容:helloword ;并且同時仍然使用的是12345678進行解密,加密解密后的結(jié)果如圖3.2所示。
圖2.2 DES算法仿真測試結(jié)果
2.3 RSA算法仿真測試結(jié)果及分析
2.3.1 素數(shù)p、q的選擇
RSA密碼體制的實現(xiàn)是一個涉及到素數(shù)的產(chǎn)生、大整數(shù)模運算等數(shù)學運算的復雜的過程。RSA體制中,實現(xiàn)RSA體制我們需要解決的一個難題是怎么樣產(chǎn)生滿足條件的大素數(shù)p、q。通常情況下,人們使用一種概率算法來產(chǎn)生大素數(shù),如果使用因子分解的辦法來求素數(shù) p、q,攻破它的難度就相當于分解一個大素數(shù)。但是這種概率算法本身就有難度,因而此次設計中,我們采用的是首先輸入任意一個相對較大的合數(shù)(即非素數(shù)),編寫程序(如圖2.3)列出這個合數(shù)所有約數(shù),任取其中兩個不同的約數(shù)都可以作為RSA算法的p、q。運行結(jié)果如圖2.4所示。
圖2.3 p、q素數(shù)產(chǎn)生代碼段
2.3.2 仿真測試結(jié)果
根據(jù)2.3.1所分析的方法,獲得素數(shù)p、q之后,接收到密文后,根據(jù)私鑰d計算m = Dk(C) = Cd mod n,結(jié)果如圖2.5。由此RSA算法實現(xiàn),如圖2.6。
圖2.5 RSA算法公鑰私鑰生成
圖2.6 RSA算法仿真測試結(jié)果
2.4 算法分析改進及實現(xiàn)DES和RSA混合算法
2.4.1 DES算法優(yōu)缺點分析
DES加密算法具有以下優(yōu)點:
● 具有很強的雪崩效應,這一效應是算法不可或缺的安全要素。
● 具有互補對稱性。
DES加密算法同時具有以下缺點:
● 因為加解密雙方都要使用相同的密鑰,所以密鑰的分發(fā)必須完成在在發(fā)送、接收數(shù)據(jù)之前。由此看來,該加密體系中的最單薄、最危險的環(huán)節(jié)就是密鑰的分發(fā),能使這項工作順利安全地完成的難度系數(shù)很高,使密鑰不能及時的更新,可能會造成密鑰被攻破。
● DES密鑰的長度過短。
2.4.2 RSA算法優(yōu)缺點分析
RSA算法加密具有以下優(yōu)點:
● 對管理公鑰的可信第三方的信任程度要求不高;
RSA算法加密同時具有以下缺點:
● 多數(shù)公鑰加密比對稱密鑰加密的速度要慢幾個數(shù)量級,對比本設計DES算法,加密解密同一個小文本文字,RSA算法所需要的時間是DES算法的十倍,因而速度慢也成為RSA算法最大的缺點。
2.4.3 兩種密碼制的結(jié)合
兩種算法各有優(yōu)缺點,在閱讀文獻后引發(fā)思考,因而在本設計中,我們將RSA算法和DES算法混合形成的新的算法。采用RSA算法對DES的初始密鑰進行加密,再由DES算法進行后續(xù)的文本加密解密。這種混合算法發(fā)揮了這兩種密碼算法的長處:非對稱密碼系統(tǒng)易于密鑰分配和對稱密碼系統(tǒng)的高效率,既能使得安全性增加,又讓系統(tǒng)效率更高。
編寫操作性比較強,我們采用的是將兩個算法的主函數(shù)進行嵌套,在RSA算法產(chǎn)生公鑰私鑰的步驟之后,把DES算法的初始密鑰進行加密,之后再對具體的文本進行DES算法加密的后續(xù)步驟。如圖2.7、圖2.8、2.9所示。
圖2.7 RSA算法代碼主函數(shù)
圖2.8 DES算法代碼主函數(shù)
圖2.9 RSA+DES算法代碼主函數(shù)
圖2.10給出了RSA+DES算法混合的算法實現(xiàn)結(jié)果。之前單獨的RSA算法運行一段900個字母的文本時,運行了12秒,而混合運算加密解密同一段文本僅運行了1秒不到,由此可見,改進后的算法明顯提高了RSA算法的速度,相較于之前如果進行大文本的加密會出現(xiàn)較長時間的卡殼的現(xiàn)象進行了很好的解決。同時,讓DES算法的安全性得到了提高。這種組合方案發(fā)揮了這兩種密碼系統(tǒng)的優(yōu)勢:不僅使得非對稱密碼系統(tǒng)易于密鑰分配,還提高了對稱密碼系統(tǒng)的效率。
圖2.10 RSA+DES算法混合算法實現(xiàn)
[1]BehrouzA Forouzan. 密碼學與網(wǎng)絡安全[M]. 清華大學出版社, 2009.
[2]張 璐.泛在信息社會中信息異化的干預機制研究[J].黑龍江大學,2014(3):20-22.
[3]翁云翔. 基于DES和RSA的混合加密算法研究
信息安全從來是人們重視的問題,同時也是人們最擔心的問題之一。密碼幾乎可以
說是隨著語言的產(chǎn)生而產(chǎn)生的,因此密碼與人類語言的歷史一樣悠久,隨著科學技術(shù)的發(fā)展而不斷的技術(shù)更新。
本次設計,基于python端,我們從密碼學的分類展開,深入研究了以DES算法為代表的對稱密碼體制和以RSA算法非對稱密碼體制,實現(xiàn)了base64算法。涉及算法設計思想,分析了密碼的元素的選擇和設計原則,深入分析各個算法的安全性和優(yōu)缺點,并從文獻中得到啟發(fā),對兩種算法進行混合改進,實現(xiàn)了RSA和DES算法的混合算法。
DES和RSA的混合加密方式既加快了非對稱密碼體制的速度,同時不再進行密鑰秘密分配,也較少的公開加密管理的密鑰數(shù)量,從而形成了一種性能更良好的密碼加密解密算法。
與設計[J]. 電子設計工程, 2016, 24(17): 42-47.
[4]徐 明.網(wǎng)絡信息安全[M]. 西安電子科技大學出版社,2006.
[5]吳文玲, 馮登國.分組密碼工作模式的研究現(xiàn)狀[J].計算機學報, 2006, 1: 3-4.
[6]郭 寧,張有志.非對稱式密碼體制數(shù)據(jù)加密算法的分析[J].山東工業(yè)大學學報, 2001, 31(2): 147-151.
[7]郭 寧,張有志,孫英明.對稱式密碼體制數(shù)據(jù)加密算法的分析[J].山東工業(yè)大學學報, 2001, 31(4): 365-369.
Implementation and research of encryption and decryption algorithm based on Python
ZHANG Xin-yuan
(JINLING INSTITUTE OF TECHNOLOGY,Jiangsu Nanjing 210000,China)
In this paper, our intention is to realize the encryption and decryption of important text. First, we introduce the related concepts and research status of cryptology. Then the relevant knowledge of DES algorithm, RSA algorithm and BASE64 is introduced emphatically. We set parameters , draw flowchart and realize all the algorithms based on Python,and we optimize RSA and DES,forming a new hybrid algorithms. Simulation results indicate that two keys make RSA safer, but lower. And DES is impressive in the speed but have serious security flaws because of using the same key.Then the new hybrid algorithms combing the advantages of them,it not only enhances the security but also improves the speed.
encryption and decryption algorithm; DES; RSA; BASE64; PYTHON
TU411.01
A
投稿日期: 2017-06-08
張芯苑(1995-),女,漢族,本科,研究方向:電子信息。