密码学课程设计.doc_第1页
密码学课程设计.doc_第2页
密码学课程设计.doc_第3页
密码学课程设计.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

密码学课程设计实验一:实现一个多表古典加密和解密程序实验内容:掌握多表古典加密方法,能用高级语言实现古典加密方法。多表古典加密方法主要有playfair体制、vigenere体制、beaufor体制、vernam体制和hill体制,用高级语言实现其中一种体制的加密和解密算法。实验二:实现分组密码算法des实验内容:掌握分组加密算法的设计与实现方法。用高级语言实现实现des加密和解密算法。des是由初始变换、乘积变换和逆初始变换构成,乘积变换是des算法的核心。首先用代码实现这几个变换,然后组合成des加密算法。由于des解密算法与加密算法相同只是子密钥使用次序不同,因此可简单地由加密算法实现解密算法。1.2分组密码des的基本原理。实验三:实现一个大素数生成算法实验内容:进一步掌握大素数分解的一般原理和实现方法。能用间接方法实现大素数分解。用代码实现solovay-strassen素性测试法或miller-rabin素性测试法。实验四:实现公钥密码算法rsa 实验内容:1.1 实验内容掌握多表古典加密方法,能用高级语言实现古典加密方法。多表古典加密方法主要有playfair体制、vigenere体制、beaufor体制、vernam体制和hill体制,用高级语言实现其中一种体制的加密和解密算法。1.2 vigenere算法的基本原理1.2.1 vigenere算法概述vigenere密码就是一种传统加密技术,它是多表代换密码,能够有效改进单表代换密码的词频分布特征问题1.2.2 vigenere算法流程从vigenere代换表中,以密钥字符串中的“d”为行,消息中的“w”为列的那个字母就是“z”了。使用查表的方式多加密几次就能很轻易地总结出规律:将az以025编号,那么加密过程就是,在代换表的第一行中找到消息字母,如“w”,然后向后移动d(即3)次,所得的字母就是密文了。如果数到末位,那么下一次移位就从头(即a)继续。 也就是说,可以将az看成一个环,加密过程就是找定消息字母后,将指针往环的某个特定方向移位,次数就是密钥字母所代表的数字。这其实是一个模26的过程。扩展一下,以上加密仅能对26个字母进行加密,而且不能区分大小写。但其实英文中除了字母外,还有标点符号,还有空格。如果考虑到大部分英文字符,那么vigenere代换表将比较大,而且有点浪费空间的嫌疑。如果假设能被加密的字符有n个,如果把这n个字符建成一个环,那么加密过程就是模n的过程,即,c(i)=(k(i)+p(i)modn,其中k、c、p分别代表的是密钥空间、密文空间、消息(明文)空间。1.2.3 关键算法解析收方和发方约定一个密钥为词组,比如说是:nice day,对应的数字序列即是(13,8,2,4,3,0,24)。而加密的密钥即是将它不断重复的周期序列c=(13,8,2,4,3,0,24)。加密方式为e(x) x+c y(mod 26)(x是明文,e(x)为密文),而去密为d(y) y-c x(mod 26)。例如:输入明文字符为:this cryptosys;输出密文为:g p k w f r w c b q w b s;1.2.4 实验结果及分析主要功能:在通信的时候,给一段明文加密,再把密文发给收信方。这是一种传统的比较简单的加密方法。1.3 playfair算法的基本原理1.3.1 playfair算法概述playfair密码出现于1854年,它依据一个5*5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。1.3.2 playfair算法流程第一步是编制密码表。在这个5*5的密码表中,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉。如:密钥是live and learn,去掉后则为liveandr。如果密钥过长可占用第二列或行。 如密钥crazy dog,可编制成 cohmtrginuabjpvyekqwdflsx 第二步整理明文。将明文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母x。 如,communist,应成为co,mx,mu,ni,st。1.3.3 关键算法解析对明文加密规则如下: 1 、若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,ct对应oc 2 、若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。 3、 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,wh对应tk或kt。 如,依照上表,明文where there is life,there is hope. 可先整理为wh er et he re is li fe th er ei sh op ex 然后密文为:kt yg wo ok gy nl hj of cm yg kg lm mb wf 将密文变成大写,然后几个字母一组排列。 如5个一组就是ktygw ookgy nlhjo fcmyg kglmm bwf 解密描述:playfair解密算法首先将密钥填写在一个5*5的矩阵中(去出重复字母和字母z),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文。 对密文解密规则如下: 1、 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。 2、 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。 3、 若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。 其实就是反其道而行之。1.3.4 实验结果1.4 vernam算法的基本原理1.4.1 vernam算法概述vernam加密法也称一次性板(one-time-pad),用随机的非重复的字符集合作为输出密文.这里最重要的是,一旦使用了变换的输入密文,就不再在任何其他消息中使用这个输入密文(因此是一次性的).输入密文的长度等于原消息明文的长度。1.4.2 vernam算法流程以下是主要步骤. 1.按递增顺序把每个明文字母作为一个数字,a=0,b=1等等. 2.对输入密文中每一个字母做相同的处理. 3.将明文中的每个字母与密钥中的相应字母相加. 4.如果得到的和大于26,则从中减去26. 5.将和转化为字母,从而得到密文。1.4.3 关键算法解析显然,由于一次性板用完就要放弃,因此这个技术相当安全,适合少量明文消息,但是对大消息是行不通的(一次性板称为密钥(key),并且明文有多长,密钥就有多长,因此对于大消息行不通).vernam加密法最初是at&t公司借助所谓的vernam机实现的. 假设对明文消息how are you进行verman加密,一次性板为ncbtzqarx得到的密文消息uqxtuyfr.以下是图解 1.明文: h o w a r e y o u 7 14 22 0 17 4 24 14

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论