客服电话:15682930301

计算机论文

当前位置: 毕业论文>计算机论文 > 正文

基于Python的代替密码破译方法实现

发布时间:2020-01-14 15:18文字数:10896字

  摘 要:随着计算机与网络应用的普及,信息安全问题越来越引起人们的重视。仅靠对管理制度进行完善难以从根本上杜绝内部安全问题的发生,必须从技术上对内部数据文件进行保护,文件保护系统也由此而生。本文通过对Python的基本概念、加解密基本算法及原理进行系统说明,采用代替方法实现对信息的加解密,并对加解密过程实现可视化等方面的分析,由浅入深对Python的代替密码破译方法实现研究与设计及防范技术进行了系统的研究。

  关键词:信息安全 Python 密码破译

  第1章 绪论

  1.1 研究背景及意义

  信息安全从来都是人们最重视的问题,同时也是人们最担心的问题之一。密码几乎可以说是随着语言的产生而产生的,因此密码与人类语言的历史一样悠久,随着科学技术的发展而不断的技术更新。

  随着信息社会的到来,利用信息资源,人们产生了巨大的利益,但是,多起信息泄露事故的发生,不得不让我们正视信息安全的考验。目前,在网络上传输数据文件进行交流成了我们的习惯,便利之余,在传输过程中一些数据图像很有可能遭受黑客等其他一些恶意迫害者的攻击,导致数据误传、错传,甚至内容被修改或者被截走。网络密码学的诞生极大地保障了网络传输的安全性,由对称加密与解密算法 DES 和非对称加密算法 RSA 组成的数据加密的诞生极大地丰富了网络密码学的内容,保障了网路数据传输的安全性。

  现如今,随着智能设备的发展,加密解密也已不仅仅是一行行的代码,为了减少操作步骤及泄密事件的发生,避免重复操作带来的错误,达到高效、快捷、安全的目的,越来越多的加密解密方式变成了通过窗口实现明密文转换的方式。

  本文使用Python实现代替密码破译,通过Python设计一个可视化窗口程序,输入一段密文,利用这个窗口程序得到明文,然后通过反向操作,破译密文并发现问题,改进问题,从而达到保密效果。

  1.2 Python语言

  1.2.1 Python语言简介

  Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明。Python是纯粹的自由软件,源代码和解释器CPython遵循GPL(GNU General Public License)协议 。Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。同时Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中 有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

  1.2.2 Python语言的优势

  Python语言是一种功能强大的具有解释性、交互性和面向对象的第四代计算机编程语言,用Python语言代替密码破译,其优点主要有以下几点:

  1.简单:Python的语法非常优雅,甚至没有像其他语言的大括号,分号等特殊符号,代表了一种极简主义的设计思想。阅读Python程序像是在读英语。

  2.易学:Python入手非常快,学习曲线非常低,可以直接通过命令行交互环境来学习Python编程。

  3.免费/开源:Python的所有内容都是免费开源的,这意味着你不需要花一分钱就可以免费使用Python,并且你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。

  4.自动内存管理:如果你了解C语言、C++语言你就会知道内存管理给你带来很大麻烦,程序非常容易出现内存方面的漏洞。但是在Python中内存管理是自动完成的,你可以专注于程序本身。

  5.可以移植:由于Python是开源的,它已经被移植到了大多数平台下面,例如:Windows、MacOS、Linux、Andorid、iOS等等。

  6.解释性:大多数计算机编程语言都是编译型的,在运行之前需要将源码编译为操作系统可以执行的二进制格式(0110格式的),这样大型项目编译过程非常消耗时间,而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。

  7.面向对象:Python既支持面向过程,又支持面向对象,这样编程就更加灵活。

  8.可扩展:Python除了使用Python本身编写外,还可以混合使用像C语言、Java语言等编写。

  9.丰富的第三方库:Python具有本身有丰富而且强大的库,而且由于Python的开源特性,第三方库也非常多,例如:在web开发、爬虫、科学计算等等。

  第2章 加密解密基本算法及原理

  2.1 密码体制的分类

  密码体制也叫密码系统,是指能完整地解决信息安全中的机密性、数据完整性、认证、身份识别、可控性及不可抵赖性等问题中的一个或几个的一个系统。对一个密码体制的正确描述,需要用数学方法清楚地描述其中的各种对象、参数、解决问题所使用的算法等。

  通常,数据的加密和解密过程是通过密码体制+密钥来控制的。密码体制必须易于使用,特别是应当可以在微型计算机使用。密码体制的安全性依赖于密钥的安全性,现代密码学不追求加密算法的保密性,而是追求加密算法的完备,即:使攻击者在不知道密钥的情况下,没有办法从算法找到突破口。

  通常的密码体制采用移位法、代替法和代数方法来进行加密和解密的变换,可以采用一种或几种方法结合的方式作为数据变换的基本模式。密码体制是由加密解密共同组成的信息保密机制,分为对称密码体制和非对称密码体制两类。

  2.1.1 对称密码体制

  对称密码体制是一种传统密码体制,也称为私钥密码体制。在对称加密系统中,加密和解密采用相同的密钥。因为加解密密钥相同,需要通信的双方必须选择和保存他们共同的密钥,各方必须信任对方不会将密钥泄密出去,这样就可以实现数据的机密性和完整性。对于具有n个用户的网络,需要n(n-1)/2个密钥,在用户群不是很大的情况下,对称加密系统是有效的。但是对于大型网络,当用户群很大,分布很广时,密钥的分配和保存就成了问题。

  比较典型的算法有DES(Data Encryption Standard数据加密标准)算法及其变形Triple DES(三重DES),GDES(广义DES);欧洲的IDEA;日本的FEAL N、RC5等。DES标准由美国国家标准局提出,主要应用于银行业的电子资金转帐(EFT)领域。DES的密钥长度为56bit。Triple DES使用两个独立的56bit密钥对交换的信息进行3次加密,从而使其有效长度达到112bit。RC2和RC4方法是RSA数据安全公司的对称加密专利算法,它们采用可变密钥长度的算法。通过规定不同的密钥长度,,C2和RC4能够提高或降低安全的程度。对称密码算法的优点是计算开销小,加密速度快,是目前用于信息加密的主要算法。它的局限性在于它存在着通信的贸易双方之间确保密钥安全交换的问题。此外,某一贸易方有几个贸易关系,他就要维护几个专用密钥。它也没法鉴别贸易发起方或贸易最终方,因为贸易的双方的密钥相同。另外,由于对称加密系统仅能用于对数据进行加解密处理,提供数据的机密性,不能用于数字签名。

  对称密码体制是加密的密钥和解密密钥用同一个密钥的体制,用公式表达就是:加密过程:C=E(M、K)解密过程:M=D(C、K)其中字母的依次是:M 为明文、K 为密钥、E 为机制或算法、C 为密文。

  2.1.2 非对称密码体制

  非对称密码体制也叫公钥加密技术,该技术就是针对私钥密码体制的缺陷被提出来的。在公钥加密系统中,加密和解密是相对独立的,加密和解密会使用两把不同的密钥,加密密钥(公开密钥)向公众公开,谁都可以使用,解密密钥(秘密密钥)只有解密人自己知道,非法使用者根据公开的加密密钥无法推算出解密密钥,顾其可称为公钥密码体制。如果一个人选择并公布了他的公钥,另外任何人都可以用这一公钥来加密传送给那个人的消息。私钥是秘密保存的,只有私钥的所有者才能利用私钥对密文进行解密。

  公钥密码体制的算法中最著名的代表是RSA系统,此外还有:背包密码、McEliece密码、Diffe_Hellman、Rabin、零知识证明、椭圆曲线、EIGamal算法等。公钥密钥的密钥管理比较简单,并且可以方便的实现数字签名和验证。但算法复杂,加密数据的速率较低。公钥加密系统不存在对称加密系统中密钥的分配和保存问题,对于具有n个用户的网络,仅需要2n个密钥。公钥加密系统除了用于数据加密外,还可用于数字签名。公钥加密系统可提供以下功能:A、机密性(Confidentiality):保证非授权人员不能非法获取信息,通过数据加密来实现;B、确认(Authentication):保证对方属于所声称的实体,通过数字签名来实现;C、数据完整性(Data integrity):保证信息内容不被篡改,入侵者不可能用假消息代替合法消息,通过数字签名来实现;D、不可抵赖性(Nonrepudiation):发送者不可能事后否认他发送过消息,消息的接受者可以向中立的第三方证实所指的发送者确实发出了消息,通过数字签名来实现。可见公钥加密系统满足信息安全的所有主要目标。

  非对称密码体制是加密和解密密钥用的不是同一个密钥的体制。当中需要两个密钥,称为公钥和私钥,两者依次对应,并且无法互相推出。在实践使用当中,根据需要,两个密钥分别用来加密和解密。非对称密码体制中,主要的加密方法是公钥密码体制(Public Key Instructure)简称 PKI,PKI 算法成为当前信息加密技术的主流,而 PKI 的基础就是 RSA 算法。

  2.2 DES 算法详细原理介绍

  2.2.1 DES 算法概述

  DES算法为密码体制中的对称密码体制,又被称为美国数据加密标准,是1972年美国IBM公司研制的对称密码体制加密算法,之后在产业中尤其是金融业中得到大力推广和使用。 明文按64位进行分组,密钥长64位,密钥事实上是56位参与DES运算(第8、16、24、32、40、48、56、64位是校验位, 使得每个密钥都有奇数个1)分组后的明文组和56位的密钥按位替代或交换的方法形成密文组的加密方法。DES 算法是分组密码的经典代表,也是第一个公开的算法标准。

  DES算法具有极高安全性,到目前为止,除了用穷举搜索法对DES算法进行攻击外,还没有发现更有效的办法。而56位长的密钥的穷举空间为2^56,这意味着如果一台计算机的速度是每一秒钟检测一百万个密钥,则它搜索完全部密钥就需要将近2285年的时间,可见,这是难以实现的。然而,这并不等于说DES是不可破解的。而实际上,随着硬件技术和Internet的发展,其破解的可能性越来越大,而且,所需要的时间越来越少。使用经过特殊设计的硬件并行处理要几个小时。

  2.2.2 DES 算法设计思想和准则

  DES 算法根源上来说是一种将置换、代换、移位多种密码技术综合运用的乘积密码。采用 Feistel网络结构,DES 算法以 64 位(8 byte)密钥为分组对数据加密,因为加密和解密过程算法相对应,架构也相同,只是顺序不同,因此使用同一个密钥。以加密过程为例,解密过程原理不再赘述。对于 64 位明文的加密过程如下:

  (1)经过初始置换,将明文平均分成左右各 32位的两部分。

  (2)密钥与右半部分结合,再与左半部分结合成为新的右半部分。

  (3)一开始的右半部分作为新的左部分再进行下一轮的轮换。

  (4)以上过程组成一轮。这种轮换要重复 16 次。16 轮之后 , 再进行终结置换。

  简单来说,DES 的加密过程由加密处理、加密变换和子密钥生成几个部分组成。

  2.3 RSA 算法详细原理介绍

  2.3.1 RSA 算法概述

  RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。只有短的RSA钥匙才可能被强力方式解破,目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。它功能强大,既能用于数据加密也能用于数字签名。RSA算法基于一个十分简单的数论事实:将两个大质数相乘十分容易,但是想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。RSA 算法的安全性主要仰仗于对一个大数进行分解问题的难解性,因而后文我们对实现 RSA 算法的参数的选择进行了重点讨论。

  2.3.2 RSA 体制的算法过程

  RSA 密码体制的实现使用了模数n 进行分解的运算,这里的 n 是两个不同的素数(即除了自己和1 以外不能被任何数整除的数)p 和 q 的乘积。RSA体制的算法具体过程如下:

  首先产生密钥,过程如下:

  (1)随机产生两个长度为 K/2 位的素数 P 和 Q。

  (2)计算公钥 public Key =P*Q;(public Key 是K 位的长度)。

  (3)随机产生一个加密密钥 2 ≤ key E ≤ Φ(n)-1,其中 GCD[key E,Φ(n)]=1,即 key E 和Φ(n)互质。

  注意:这是保证解密密钥 key E×key D mod[Φ(n)]=1 有解的充要条件,Φ(n)称为 n 的欧拉函数,函数值为:Φ(n)=(P-1)×(Q-1)。

  (4)求解密密钥 key D=key E-1mod(n),key E-1为解密密钥 key D 的逆元,这个公式原方程为[key E×key D mod(n)=1]。由此公钥、加密密钥和解密密钥全部产生。

  接下来,对明文加密或对密文进行解密,具体的公式如下:

  (1)加密: C = Mkey E mod public Key; 其 中M 表示明文,C 表示密文。

  (2)解密: M = Ckey D mod public Key;其中M 表示明文,C 表示密文。

  2.4 其他加密解密算法

  较为常用的其他加密解密算法为 base64 编码。它是我们程序开发中经常使用到的编码方法,DES 算法的实现也离不开它。标准的Base64并不适合直接放在URL里传输,因为URL编码器会把标准Base64中的“/”和“+”字符变为形如“%XX”的形式,而这些“%”号在存入数据库时还需要再进行转换,因为ANSI SQL中已将“%”号用作通配符。

  为解决此问题,可采用一种用于URL的改进Base64编码,它不在末尾填充'='号,并将标准Base64中的“+”和“/”分别改成了“*”和“-”,这样就免去了在URL编解码和数据库存储时所要作的转换,避免了编码信息长度在此过程中的增加,并统一了数据库、表单等处对象标识符的格式。

  另有一种用于正则表达式的改进Base64变种,它将“+”和“/”改成了“!”和“-”,因为“+”,“*”以及前面在IRCu中用到的“[”和“]”在正则表达式中都可能具有特殊含义。

  此外还有一些变种,它们将“+/”改为“_-”或“._”(用作编程语言中的标识符名称)或“.-”(用于XML中的Nmtoken)甚至“_:”(用于XML中的Name)。

  Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

  BASE64 用 64 个可以打印的字符来表示对应的二进制数据,因此通常用作存储、传输一些二进制数据编码方法。

  第3章 模拟Python代替密码破译过程

  3.1 代替密码破译界面程序(mainwindow)

  首先,在进行代替密码进行加密、解密之前,要为加密、解密者提供一个即使是没有编程基础的普通用户也可以轻松进行加解密操作的可视化界面。可视化编程,亦即可视化程序设:以“所见即所得”的编程思想为原则,力图实现编程工作的可视化,即随时可以看到结果,程序与结果的调整同步。可视化程序设计是一种全新的程序设计方法,它主要是让程序设计人员利用软件本身所提供的各种控件,像搭积木式地构造应用程序的各种界面,可以不用编写或只需编写很少的程序代码,就能完成应用程序的设计,能极大地提高设计人员的工作效率。以下即为可视化代替密码破解界面的代码程序:

  3.2 计算密码字典程序(makeWordPatterns)

  由于网络用户通常采用某些英文单词或者自己姓名的缩写作为密码,所以就先建立一个包含巨量英语词汇和短语、短句的可能的密码词汇字典(也称字典档),然后使用破解软件去一一尝试,如此循环往复,直到找出正确的密码,或者将密码词汇字典里的所有单词试完一遍为止。这种破解密码方法即为密码字典破解法,其效率远高于穷举法,而密码字典是配合密码破译软件所使用的。

  密码字典的生成方法主要对密码赋予概率值,当需要生成密码时,优先选择概率值大的密码,当前研究主要集中在 Markov 模型和基于概率上下文的密码模型,这两种方法都在已有密码字典基础上,用统计学的方法分析密码出现的频率,并计算对应的密码概率值,然后建立模型,并在模型基础上生成新的密码。

  有学者认为人类使用密码是容易被记忆的,而且密码与不同地域不同国家的本土语言有关联,他们利用马尔科夫(Markov)模型选择出现概率大的字符组合作为候选密码,并结合有限状态自动机减少搜索空间,并去掉概率小的密码组合。该方法缺少考虑有限自动机限定之外的大概率字符组合。他们在破解中采用基于彩虹表的时间空间权衡技术进行预处理,实现在字典中快速找到密码,但这不是标准的字典攻击,在实验中对142 哈希密码进行测试,成功破解出 96 个(67.6%),但没有对更复杂的密码进行测试,而且 142 个哈希密码数据量太小,不具有代表性。

  某些学者在按照字符类别,如大写字母,小写字母、数字等,在原有密码字典基础上,找出出现次数高的字符类别组合,然后根据概率上下文无关文法的生成式规则填充字符,重新生成新的密码。该方法有效利用字符组合类型的结构,但没有对如何有效划分字符类别进行说明,而且该方法不适合生成较小的密码字典。

  另外有些学者对概率密码模型的两种方法做了评价,对 Markov 模型和概率上下文文法的模型做比较,认为前者破解效果更明显。他们把密码模型划分为两类:全串模型(Whole-string models)和基于模板的模型(template-base models),全串模型就是把考虑整个字符串,整个密码,而基于模板的模型则是将字符串划分为多块,然后分别考虑每块的情形。他们认为当前并没有更好地利用 Markov 模型,主要表现在以下三个方面:第一:现在只使用非常简单的 Markov 模型。在统计学中,已经有很多技术改进 Markov 模型,而这些并没有应用到密码模型中;第二:密码和统计语言模型不相同,大部分密码长度在 6~12 之间,而在语音识别过程中,句子的长度都比较相似;第三:不同密码模型方法还没有进行系统的互相比较。

  还有一些人通过分析常用的密码字典,标识密码出现的频率和相关的概率,提出训练集、密码集和测试集的 TDT 模型,该模型能够产生概率递减的密码,仿真结果表明测试比破解工具John the Ripper多1.43 到 2.5 倍的破解率。

  因此我们需要选择合适的方式编写字典生成程序,从而使其按照程序要求快速生成很大数据量的明文,来创建适合自己解密的密码字典,提供给解密软件解密用。以下为此次解密测试的密码字典生成程序:

  3.3 单词模式程序(wordPatterns)

  单词模式(即密码字典)里包括许多人们习惯性设置的密码,这样可以提高密码破译软件的密码破译成功率和命中率,缩短密码破译的时间。如果一个人密码设置没有规律或很复杂,未包含在密码字典里,这个字典就没有用了,甚至会延长密码破译所需要的时间。

  3.3.1 常用密码字典类型

  常用密码字典主要有以下几种分类

  1、密码字典常规字典:采用递归运算,自定义生成包含任意字符或汉字的字典。

  2、密码字典不同字符集:“每位使用不同字符集”功能:此功能乃木头字典生成器所特有,可以为密码字典的每一位设置不同的字符集。

  3、密码字典日期字典:生日字典:可生成6位或8位日期密码字典(生日密码字典),支持多种年,月,日,的组合格式。

  4、密码字典英文字典:软件自带常用英语单词,英语人名词典和英语地名词典可方便地加入到字典中。

  5、密码字典弱口令字典:软件件自带弱口令集,且你可以根据需要自已手动添加弱口令。弱口令集放到所有字典的前列,效率更好。

  6、密码字典拼音字典:独有的汉字拼音字典功能,可任意设置拼音的大小写和首字母大写。

  7、密码字典电话号码生成:手机号码生成器:电话号码生成器自动生成指定地点的中国移动和中国联通的手机号码,也可生成固定电话号码。

  8、密码字典姓名拼音字典:姓名字典生成器生成包括百家姓的姓名汉字或拼音字典

  9、密码字典汉字注音:给已有中文文本文件注音。 支持拼音单独输出或汉字拼音交替输出。

  10、密码字典分割输出:支持字典分割输出,自动分割大字典文件。

  可以任意选择基本字符串和密码长度,精确估算生成字典记录总数和字典文件大小,防止设置过大字典生成时造成死机。

  3.3.2 密码字典修改模式

  1、接位修改字典:插入字符字符串,删除指定字符,修改字典的任意位。

  2、密码字典按行修改字典:添加删除指定的行。

  3、密码字典字典集合运算:把字典看作一个集合,可进行集合的并,交,笛卡乐积,对称差,相对补运算。

  4、密码字典大小写转换:任意转换字典的大小写或首字母大写。

  5、密码字典字典清理:清理字典中重复的行,空行或指定字符串的行。

  6、字典属性查看:计算出字典的大小,最大长度,最小长度等属性。

  各种字典生成与修改方法组合使用,可以巧妙地生成各种简单实用的字典。

  3.4 密码破解程序(passwordDecipher)

  密码破解根据破解的目标主要分为两种:在线破解和离线破解。在线破解的目标是一个线上系统,每次破解过程都会向这个系统提交一个猜测,然后得到这个系统的返回结果。在线破解的一个重要特点是攻击者正在破解的系统是运作着的,所以在破解过程中,系统有可能检测到攻击并且采取一定的防卫措施来限制猜测的数目。离线破解的目标是密码加密文件,在离线破解中,攻击者已经获取了系统的密码哈希值或者密码加密文件,避免了运作着的在线系统的防御措施和保护机制,可以产生任意数量的猜测。

  在线破解和离线破解主要区别就是猜测数目的限制,一般情况下在线破解的要求比较高,攻击者能够产生的猜测数目较少,离线破解要求低,能够产生大量的猜测。在本文中主要讨论离线破解方法,在线系统的防御保护机制不作考虑。

  在离线破解中,比较有效的方法也分为三种:猜测攻击法、字典攻击法和暴力攻击法。猜测攻击法尝试破解那些“容易记忆”的密码,这些密码一般与用户的个人信息相关,这种方法依靠的是经验和对目标用户的熟悉程度,这就使得猜测攻击法高度依赖于特定用户的个人信息,不能针对普通用户。字典攻击法事先把所有的明文密文对存储在字典中,当给定一个密文时候,就查询字典。暴力攻击法需要遍历密钥空间,一个一个尝试。

  而我们此次所用的破解方式即为字典攻击法,常见的小字典生成大字典的密码破解方法有:基于时空折中的密码破解方法;基于概率模型的密码破解方法;基于特殊键盘模式的密码破解方法等。此次密码破解的程序代码如下:

  3.5 简单替代密码加解密测试程序(simpleSubstitutePassword)

  替代是古典密码中用到的最基本的处理技巧之一 。代替密码,指每一个字符被替换成密文中的另一个字符。接收者对密文做反向替换就可以恢复出明文。在经典的密码学中,有这几种类型的代替密码:1.简单代替密码(simple substitution cipher);2.多名或同音代替密码(homophonic subdtitution cipher);3.多表代替密码(polyalphabetic substitution cipher);4.多字母代替密码(polygram substitution cipher)

  替代密码是指先建立一个替换表,加密时将需要加密的明文依次通过查表,替换为相应的字符,明文字符被逐个替换后,生成无任何意义的字符串,即密文,替代密码的密钥就是其替换表 。

  根据密码算法加解密时使用替换表多少的不同,替代密码又可分为单表替代密码和多表替代密码。

  单表替代密码的密码算法加解密时使用一个固定的替换表。单表替代密码又可分为一般单表替代密码、移位密码、仿射密码、密钥短语密码。

  多表替代密码的密码算法加解密时使用多个替换表。 多表替代密码有弗吉尼亚密码、希尔(Hill)密码、一次一密钥密码、Playfair密码。

  单表替代密码对明文中的所有字母都使用一个固定的映射(明文字母表到密文字母表)。设A={a0, a1,…, an-1}为包含了n个字母的明文字母表;

  B={b0, b1,…, bn-1} 为包含n个字母的密文字母表,单表替代密码使用了A到B的映射关系:f:A→B, f ( ai )= bj

  一般情况下,f 是一一映射,以保证加密的可逆性。加密变换过程就是将明文中的每一个字母替换为密文字母表的一个字母。而单表替代密码的密钥就是映射f或密文字母表。经常密文字母表与明文字母表的字符集是相同的,这时的密钥就是映射f。

  单表替代密码表现出明文中单字母出现的频率分布与密文中相同, 多表替代密码使用从明文字母到密文字母的多个映射来隐藏单字母出现 的频率分布,每个映射是简单替代密码中的一对一映射多表替代密码将 明文字母划分为长度相同的消息单元,称为明文分组,对明文成组地进 行替代,同一个字母有不同的密文,改变了单表替代密码中密文的唯一 性,使密码分析更加困难。

  多表替代密码的特点是使用了两个或两个以上的替代表。著名的维吉尼亚密码和Hill密码等均是多表替代密码。以下即为此次简单替代密码加解密测试程序代码:

  结 论

  本次设计,基于 python 端,我们从密码学的分类展开,通过对以 DES 算法为代表的对称密码体制和以 RSA 算法非对称密码体制的详细介绍,并对代替密码破译方法进行了仿真测试,其中涉及了算法设计思想,密码的元素的选择和设计原则,深入分析了基于 python 的代替密码破译方法的安全性和优缺点,从而形成了一种性能更良好的密码加密解密算法。

移动版:基于Python的代替密码破译方法实现

本文标签: