张芯苑
基于python的加密解密算法实现与研究
张芯苑
(南京金陵科技学院,江苏南京 210000)
本文对重要文本信息的加密解密工作进行了研究。首先介绍了密码学技术的相关概念及其研究状况,并重点阐述了RSA算法、数据加密标准DES、BASE64的相关原理知识。基于python语言,设置上述三种算法的参数流程图,仿真实现了三种算法,并对RSA算法和DES算法进行了优化,形成新的混合算法。仿真结果表明,RSA算法因为拥有两个密钥,安全性得到保障,但是速度较慢,DES算法速度上表现出色,但是由于所有环节使用相同的密钥,容易被攻破,而新的混合算法综合他们的优缺点,既增强了安全性,又提高了算法的效率。
加密解密;PYTHON;DES;RSA算法;BASE64
随着信息社会的到来,利用信息资源,人们产生了巨大的利益,但是,多起信息泄露事故的发生,不得不让我们正视信息安全的考验。
目前,在网络上传输数据文件进行交流成了我们的习惯,便利之余,在传输过程中一些数据图像很有可能遭受黑客等其他一些恶意迫害者的攻击,导致数据误传、错传,甚至内容被修改或者被截走。网络密码学的诞生极大地保障了网络传输的安全性,由对称加密与解密算法DES和非对称加密算法RSA组成的数据加密的诞生极大地丰富了网络密码学的内容,保障了网路数据传输的安全性。
本文中的加密与解密算法包括三种实现方式,除了基本base64算法调用实现以外,重点在于DES算法和RSA算法。基于python设计了三种算法,并且实现DES和RSA新的混合算法。
1.1 密码体制的分类
密码体制指由加密解密共同组成的信息保密机制,分为对称密码体制和非对称密码体制两类。
1.1.1 对称密码体制
对称密码体制是指加密的密钥和解密密钥用同一个密钥的体制,用公式表达就是:
加密过程:C=E(M、K)
解密过程:M=D(C、K)
其中字母的依次是:M为明文、K为密钥、E为机制或算法、C为密文。
本文所需实现的第一个算法数据加密标准DES即属于对称密码体制,下一节将详细介绍DES算法原理。
1.1.2 非对称密码体制
非对称密码体制,就是是指加密和解密密钥用的不是同一个密钥的体制。当中需要两个密钥,称为公钥和私钥,两者依次对应,并且无法互相推出。在实践使用当中,根据需要,两个密钥分别用来加密和解密。
非对称密码体制中,主要的加密方法是公钥密码体制(Public Key Instructure)简称PKI,PKI算法成为当前信息加密技术的主流,而PKI的基础就是RSA算法,在后文中我们将详细论述并实现RSA算法。
1.2 DES算法详细原理介绍
1.2.1 DES算法概述
在1977年,DES算法被NBS(即美国国家标准与技术局)采用为标准,之后在产业中尤其是金融业中得到大力推广和使用,个人转账的信息验证等等无不依赖它。DES算法是分组密码的经典代表,也是第一个公开的算法标准,它属于对称密码算法。
1.2.2 DES算法设计思想和准则
DES算法根源上来说是一种将置换、代换、移位多种密码技术综合运用的乘积密码。采用Feistel网络结构,DES算法以64位(8 byte)密钥为分组对数据加密,因为加密和解密过程算法相对应,架构也相同,只是顺序不同,因此使用同一个密钥。以加密过程为例,解密过程原理不再赘述。对于64位明文的加密过程如下:
(1)经过初始置换,将明文平均分成左右各32位的两部分。
(2)密钥与右半部分结合,再与左半部分结合成为新的右半部分。
(3)一开始的右半部分作为新的左部分再进行下一轮的轮换。
(4)以上过程组成一轮。这种轮换要重复16次。16轮之后,再进行终结置换。
简单来说,DES的加密过程由加密处理、加密变换和子密钥生成几个部分组成。
1.3 RSA算法详细原理介绍
1.3.1 RSA算法概述
目前为止,RSA算法是最有影响的公钥密码算法,能抵抗己知的几乎所有密码攻击。它功能强大,既能用于数据加密也能用于数字签名。RSA算法的安全性主要仰仗于对一个大数进行分解问题的难解性,因而后文我们对实现RSA算法的参数的选择进行了重点讨论。
1.3.2 RSA体制的算法过程
RSA密码体制的实现使用了模n大数进行分解的运算,这里的n是两个不同的素数(即除了自己和1以外不能被任何数整除的数)p和q的乘积。RSA体制的算法具体过程如下:
首先产生密钥,过程如下:(1)随机产生两个长度为K/2位的素数P和Q。(2)计算公钥publicKey =P*Q;(publicKey是K位的长度)。
(3)随机产生一个加密密钥2≤keyE≤Φ(n)-1,其中GCD[keyE,Φ(n)]=1,即keyE和Φ(n)互质。
注意:这是保证解密密钥keyE×keyD mod[Φ(n)]=1有解的充要条件,Φ(n)称为n 的欧拉函数,函数值为:Φ(n)=(P-1)×(Q-1)。
(4)求解密密钥keyD=keyE-1mod(n),keyE-1为解密密钥keyD的逆元,这个公式原方程为[keyE×keyD mod(n)=1]。
由此公钥、加密密钥和解密密钥全部产生[6]。
接下来,对明文加密或对密文进行解密,具体的公式如下:
(1)加密: C = MkeyE mod publicKey;其中M表示明文,C表示密文。
(2)解密: M = CkeyD mod publicKey;其中M表示明文,C表示密文。
1.4 其他加密解密算法
本设计中实现的其他加密解密算法为base64编码。它是我们程序开发中经常使用到的编码方法,DES算法的实现也离不开它。BASE64 用64个可以打印的字符来表示对应的二进制数据,因此通常用作存储、传输一些二进制数据编码方法。
2.1 BASE64算法仿真测试结果及分析
转换的时候,将三位的数据,先后放入一个24位的缓冲区中,先来的占高位。数据不足3位的补0。然后,每次取出6个bit,按照其值选择ABCDEFGH IJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvw xyz0123456789+/中的字符作为编码后的输出。不断进行,直到全部输入数据转换完成。
当出现最后一组不足3位的情况时,如果还剩两个,在最后结果后补上1个“=”;剩一个的话,就在结果后面加2个“=”,这样来实现数据还原的正确性。
用我们设计的base64算法仿真结果如图2.1。
图2.1 ‘man’算法实现图
2.2 DES算法的仿真测试结果
DES实现对字符的加密和加密,首先输入8位。密钥的长度决定了该算法的安全性,因而在实际中应选用长度更长的56位密钥。8位密钥位:12345678;然后输入要加密的内容:helloword ;并且同时仍然使用的是12345678进行解密,加密解密后的结果如图3.2所示。
图2.2 DES算法仿真测试结果
2.3 RSA算法仿真测试结果及分析
2.3.1 素数p、q的选择
RSA密码体制的实现是一个涉及到素数的产生、大整数模运算等数学运算的复杂的过程。RSA体制中,实现RSA体制我们需要解决的一个难题是怎么样产生满足条件的大素数p、q。通常情况下,人们使用一种概率算法来产生大素数,如果使用因子分解的办法来求素数 p、q,攻破它的难度就相当于分解一个大素数。但是这种概率算法本身就有难度,因而此次设计中,我们采用的是首先输入任意一个相对较大的合数(即非素数),编写程序(如图2.3)列出这个合数所有约数,任取其中两个不同的约数都可以作为RSA算法的p、q。运行结果如图2.4所示。
图2.3 p、q素数产生代码段
2.3.2 仿真测试结果
根据2.3.1所分析的方法,获得素数p、q之后,接收到密文后,根据私钥d计算m = Dk(C) = Cd mod n,结果如图2.5。由此RSA算法实现,如图2.6。
图2.5 RSA算法公钥私钥生成
图2.6 RSA算法仿真测试结果
2.4 算法分析改进及实现DES和RSA混合算法
2.4.1 DES算法优缺点分析
DES加密算法具有以下优点:
● 具有很强的雪崩效应,这一效应是算法不可或缺的安全要素。
● 具有互补对称性。
DES加密算法同时具有以下缺点:
● 因为加解密双方都要使用相同的密钥,所以密钥的分发必须完成在在发送、接收数据之前。由此看来,该加密体系中的最单薄、最危险的环节就是密钥的分发,能使这项工作顺利安全地完成的难度系数很高,使密钥不能及时的更新,可能会造成密钥被攻破。
● DES密钥的长度过短。
2.4.2 RSA算法优缺点分析
RSA算法加密具有以下优点:
● 对管理公钥的可信第三方的信任程度要求不高;
RSA算法加密同时具有以下缺点:
● 多数公钥加密比对称密钥加密的速度要慢几个数量级,对比本设计DES算法,加密解密同一个小文本文字,RSA算法所需要的时间是DES算法的十倍,因而速度慢也成为RSA算法最大的缺点。
2.4.3 两种密码制的结合
两种算法各有优缺点,在阅读文献后引发思考,因而在本设计中,我们将RSA算法和DES算法混合形成的新的算法。采用RSA算法对DES的初始密钥进行加密,再由DES算法进行后续的文本加密解密。这种混合算法发挥了这两种密码算法的长处:非对称密码系统易于密钥分配和对称密码系统的高效率,既能使得安全性增加,又让系统效率更高。
编写操作性比较强,我们采用的是将两个算法的主函数进行嵌套,在RSA算法产生公钥私钥的步骤之后,把DES算法的初始密钥进行加密,之后再对具体的文本进行DES算法加密的后续步骤。如图2.7、图2.8、2.9所示。
图2.7 RSA算法代码主函数
图2.8 DES算法代码主函数
图2.9 RSA+DES算法代码主函数
图2.10给出了RSA+DES算法混合的算法实现结果。之前单独的RSA算法运行一段900个字母的文本时,运行了12秒,而混合运算加密解密同一段文本仅运行了1秒不到,由此可见,改进后的算法明显提高了RSA算法的速度,相较于之前如果进行大文本的加密会出现较长时间的卡壳的现象进行了很好的解决。同时,让DES算法的安全性得到了提高。这种组合方案发挥了这两种密码系统的优势:不仅使得非对称密码系统易于密钥分配,还提高了对称密码系统的效率。
图2.10 RSA+DES算法混合算法实现
[1]BehrouzA Forouzan. 密码学与网络安全[M]. 清华大学出版社, 2009.
[2]张 璐.泛在信息社会中信息异化的干预机制研究[J].黑龙江大学,2014(3):20-22.
[3]翁云翔. 基于DES和RSA的混合加密算法研究
信息安全从来是人们重视的问题,同时也是人们最担心的问题之一。密码几乎可以
说是随着语言的产生而产生的,因此密码与人类语言的历史一样悠久,随着科学技术的发展而不断的技术更新。
本次设计,基于python端,我们从密码学的分类展开,深入研究了以DES算法为代表的对称密码体制和以RSA算法非对称密码体制,实现了base64算法。涉及算法设计思想,分析了密码的元素的选择和设计原则,深入分析各个算法的安全性和优缺点,并从文献中得到启发,对两种算法进行混合改进,实现了RSA和DES算法的混合算法。
DES和RSA的混合加密方式既加快了非对称密码体制的速度,同时不再进行密钥秘密分配,也较少的公开加密管理的密钥数量,从而形成了一种性能更良好的密码加密解密算法。
与设计[J]. 电子设计工程, 2016, 24(17): 42-47.
[4]徐 明.网络信息安全[M]. 西安电子科技大学出版社,2006.
[5]吴文玲, 冯登国.分组密码工作模式的研究现状[J].计算机学报, 2006, 1: 3-4.
[6]郭 宁,张有志.非对称式密码体制数据加密算法的分析[J].山东工业大学学报, 2001, 31(2): 147-151.
[7]郭 宁,张有志,孙英明.对称式密码体制数据加密算法的分析[J].山东工业大学学报, 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-),女,汉族,本科,研究方向:电子信息。