《现代密码学》实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2.掌握SKEY协议的机制和实现方法。
[实验预备]
1.SKEY协议的作用。
2.SKEY协议的安全性分析。
3.SKEY协议的实现过程。
[实验内容]
1.分析SKEY协议的实现过程。
2.用程序设计语言将算法过程编程实现。
3. 演示SKEY协议的身份鉴别过程。
[实验步骤]
1.预习SKEY协议的机制。
2.选择和实现相应的摘要算法MD5或SHA。
3.写出算法流程,用程序设计语言将协议过程编程实现。
4.验证SKEY协议的身份鉴别过程。
写出所编写程序的流程图和运行界面、运行结果。
程序流程图:
不同
相同


每输入一次活动密钥就验证一次。
运行结果:
100个活动密钥:
输入第100个验证密钥:
[问题讨论]
1. 分析SKEY的安全性;
2. 分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。
K0K1 ... Kn-1 Kn
轮密钥加
字节代替
行移位
轮密钥加
字节代替
行移位
列混合
轮密钥加
字节代替
行移位
列混合
轮密钥加
明文
AES运行结果:
RC4流程图:
RC4运行结果:
[问题讨论]
1.在DES算法中有哪些是弱密钥?哪些是半弱密钥?
2.改变明文或密钥中的一个比特值可能影响AES值中的多少比特?
3.分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。
[实验内容]
1.分析DES、AES、RC4、SHA的实现过程。
2.用程序设计语言将算法过程编程实现。
3.完成字符串数据的加密运算和解密运算
输入明文:Idolikethisbook
输入密钥:cryption
[实验步骤]
1.预习DES、AES、RC4算法。
2.写算法流程,用程序设计语言将算法过程编程实现。
4.输入指定的明文和密钥进行实验,验证结果。
写出所编写程序的流程图和运行界面、运行结果。
程序流程图:
N
Y
N
Y
运行结果:
[问题讨论]
1. 总结算法的特点,分析算法的安全性;
2. 分析实验中在编辑、编译、运行等各环节中所出现的问题及解决方法。
回答问题
解:
1>RSA是第一个既能用于数据加密,也能用于数字签名的算法,它易于理解和操作,因而很流行。
[实验内容]
1.分析RSA、ECC的实现过程。
2.用程序设计语言将算法过程编程实现
3.完成数据的加密运算和解密运算
输入明文:security
输入密钥:cryption
对ASCII码进行加密和解密。
[实验步骤]
1.预习RSA、ECC算法。
2.了解大素数的生成、大数的运算、公钥、私钥的生成。
3.写出算法流程,用程序设计语言将算法过程编程实现。
2>由于字母无法进行指数运算,所以需要将字母通过ASCII码转换成数字,再进行指数运算,最后再将数字转化成字符输出。另由于素数检测函数用的是循环,其时间复杂度太高,如果输入的素数及公钥太大,会一直循环,时间花费太大,所以只能对小素数进行运算。
实验三 SKEY协议设计实验
[实验目的]
1.掌握身份认证协议的原理和基本思想。
RSA的安全性依赖于大素数n的因子分解难题,当n足够大时,可使n的分解无法在多项式时间内完成,因此p、q越大,安全性越高。
但是当用户密钥使用不当,或是攻击者获得e1、e2、n、c1、c2,共用模数n,根据c1=m^e1 mod n,c2=m^e2 mod n,若e1,e2互素,则有r*e1+s*e2=1,可以根据(c1^-1)^-r*(c2)^s=m^(r*e1+s*e2)=m mod n,从而得到明文m。RSA签名算法亦可根据其指数的特点进行攻击,一般攻击者是将某一信息做一下伪装(盲签名思想),再拥有私钥的实体签署,经过计算很容易得到攻击者所想要的信息。
回答问题
解:1>弱密钥有以下几种情况:全0;全1;一半为0,一半为1;
半弱密钥如下:E01F E01F E01F E01F
FE01 FE01 FE01 FE01
E001 E001 F101 F101
FE1F FE1F FE01 FE01
2>改变一个比特值最多改变4个AES值。
3>在RC4实验中,为了将输入的char型密钥wenku.baidu.com个存储进数组中,刚开始我想把它转化为string型,再存储,但是string型数据不能直接从键盘输入,且最后也要转换存储在char型数组中,但是都有各种问题,最后,直接定义char型数组,再直接向其中输入数据。
实验一 对称密码算法实验
[实验目的]
1.掌握密码学中经典的对称密码算法DES、AES、RC4的算法原理。
2.掌握DES、AES、RC4的算法流程和实现方法。
[实验预备]
1.DES算法有什么特点?算法中的哪些结构保证了其混淆和扩散的特性?
2.AES算法的基本原理和特点。
3.流密码RC4的密钥流生成以及S盒初始化过程。
回答问题
解:
1>该协议的安全性依赖于MD5算法的单向性,但是若密码简单,攻击者可以通过碰撞的方法有可能构造两个具有相同MD5的信息,也可通过大字典的方法破解MD5,将常用密码进行MD5后建立数据库,然后和MD5数值进行对比,通过这样的方法来“破解”MD5。
2>运行时将x[R]也打印出来了,这是不安全的,故mian函数里的打印循环程序需要更改。
实验二 公钥密码算法实验
[实验目的]
1.掌握密码学中常用的公钥密码算法RSA、ECC的算法原理。
2.掌握RSA、ECC的算法流程和实现方法。
[实验预备]
1.RSA和ECC密码系统所基于的数学难题是什么?
2.RSA和ECC算法的基本原理。
3.公钥密码系统可以取代对称密码系统吗?
4.RSA和ECC的实现过程。
编译时出现LNK2005错误,选择VC菜单Project->Setting->Link->Catagory,选择Input,再在Ignorelibraries的Edit栏中填入需要忽略的库,然后在Object/library Modules的Edit栏中填入正确的库的顺序。
3.输入指定的明文、密钥进行实验,验证结果。
4.自己选择不同的输入,记录输出结果。
写出所编写程序的流程图和运行界面、运行结果。
DES程序流程图:

DES运行结果:
AES程序流程图:
轮密钥加
逆字节代替
逆行移位
逆列混合
轮密钥加
逆字节代替
逆行移位
轮密钥加
逆列混合
轮密钥加
逆字节代替
逆行移位
明文
K0 K1 ... Kn-1 Kn
相关文档
最新文档