1、学院_班级_姓名_学号_密封线内不答题-第 1 页/共 15 页-成 都 信 息 工 程 大 学 考 试 试 卷2016 2017 学年第 1 学期课程名称: 密码算法程序设计 使用班级: 信安、信对 14 级 试卷形式:开卷 闭卷 试题 一 二 三 四 五 六 七 八 九 十总分得分选题要求:每道题目(100 分)每人任选 1 题(题目重选同学,实现算法的编程语言不得相同) ,即同一种编程语言中每班同学选题不能重复。请各位同学务必认真看清楚题目要求,然后认真选题。选题一旦确定,原则上不能更改题目。若需要更改题目,需提前与指导老师商量。课程设计安排:1、总的课程设计时间 7-12(或 13 周
2、) ;2、班委或者学委组织选题,并统计完成,7 周周五之前把选题表发到各班课程设计指导老师邮箱;3、大概安排二次课程设计中期检查(具体时间由各指导老师安排) 。答辩要求:1、熟悉所选题目密码算法的基本原理(密钥长度,明文长度,加密和解密算法核心过程) ;2、算法实现的核心代码;3、答辩时需要带的文档:课程设计源代码(自备电脑)和课程设计文档(纸质版)答辩安排:1、提前完成课程设计的同学,可以申请提前答辩,提前答辩次数和时间由各指导老师自行安排(具体时间和地点到时候再确定) ;2、最后答辩时间大概安排在 12 周(具体时间和地点到时通知) 。密码学课程设计指导教师联系方式:信安实验班 13 级:
3、张仕斌 邮箱 信抗 13 级: 万武南 邮箱 nan_信安 13 级: 张金全 邮箱 -第 2 页/共 16 页-选择下面其中一题,按要求完成课程设计。第一大类:(按照每道题目要求编写密码算法过程实现代码,密码算法不可调用编译软件现有密码算法实现接口,可以 DOS(控制台)界面)1. 基于 DES 算法密码工作模式实现(共 5 题)基于 DES 算法的 ECB、CBC、OFB、CFB、CTR 5 种密码工作模式,实现其中一种模式的加密和解密功能。功能要求:(1)对于 ECB、CBC 和 CTR 模式,明文字符输入至少大于 8 个字符长度,明文尾部必须进行填充。例如 ECB 模式下,DES 算法
4、 8 个字符一组,若输入 10 个字符“1111111111”,则需要分为 2 组,第 1 组 8 个字符,第 2 组 2 个字符,则需要填充。若输入 8 个字符“11111111” ,刚好 1 组,则需要填充增加 1 组明文。(2)尾部填充方法为除最后一个字符填充字符数,其余全填充为“0”字符。例如输入明文“1111111111” ,第 1 组明文输入“11111111” ,第二组填充之后明文“11000006”.如输入明文“11111111” ,第 1 组明文输入“11111111” ,第二组填充之后明文“00000008”.(3)对于 OFB、CFB 模式,每次反馈长度可以设定为 8 b
5、its;输入明文长度至少为32 bits; 明文分组长度由反馈长度确定。(4)CBC 、OFB、CFB、CRT 的 IV 初始变量为输入 8 个字符;(5)CRT 模式下,计数器初值可输入或者随机生成(二进制数或者 16 进制数) ,但后续计数器值自动加 1 操作(解释:上次有学生随机数是 8 个字符性质的数字,然后在字符数字的基础上加 1)(6)DES 算法下不同模式下需要的加密或解密功能。DES 加密和解密都用函数实现。输出要求:(1)密文解密中,最后一组密文解密出明文显示,需要去掉填充字符后的明文。(2)中间结果显示要求:ECB 模式加密过程显示出每组明文(字符)和密文(十六进制) ,解
6、密过程显示出每组解密的密文(十六进制)和明文(字符) 。CBC 模式加密过程显示出每组待加密的明文(字符) ,明文对应的 16 进制表示,与明文异或的数的 16进制表示,每次 DES 加密的输入(即与反馈密文异或的值,十六进制) ,密文(十六进制) ;解密过程显示出每组待解密密文,DES 解密之后输出(十六进制) ,与解密输出值异或的数的 16 进制以及与密文反馈值异或后明文(字符) 。(3)对于 OFB、CFB、CTR 模式,输出 DES 算法加密的输入和输出的数的 16 进制,并把每组明文和密文,以及移位寄存器的中间结果的 16 进制输出来。编程要求:C、C+、Java 、Ruby 实现控
7、制台编程语言题目列表:(1) 基于 DES 算法 ECB 运行模式实现学院_班级_姓名_学号_密封线内不答题-第 3 页/共 15 页-(2) 基于 DES 算法 CBC 运行模式实现(3) 基于 DES 算法 OFB 运行模式实现(4) 基于 DES 算法 CFB 运行模式实现(5) 基于 DES 算法 CTR 运行模式实现2. DES 算法加密和解密实现(共 1 题)实现 DES 算法加密和解密过程的详细展示。功能要求:(1)输入 8 个字符做明文,输入 8 个字符作为密钥;例如学号后 8 位,如“11111111”;(2)把输入的字符转换为二进制;(3)E 扩展、与密钥异或、查找 S 盒
8、、P 置换、与前面 32 位异或、IP 逆置换等都要求写成函数; PC-1,循环移位,PC-2 写成函数;DES 密钥扩展整个过程、加密和解密整个过程分别写成函数,调用变换函数完成。(4)完成 DES 加密过程,输入明文,能加密得到正确密文(密文以十六进制显示)(5)完成 DES 解密过程,输入密文(十六进制) ,能解密得到正确明文(字符形式) 。(6)明文加密之后密文,必须能正确解密出相应明文(7)操作简单,界面美观。输出要求:(1)用函数实现把字符与二进制相互转换过程,并输出转换后的结果;用函数实现十六进制与二进制相互转换过程。(2)中间结果包括:输出一轮加密中的 IP 初始置换、E 盒扩
9、展、与子密钥异或、S 盒替代、P 盒置换每个处理之后的值,以及一轮迭代之后左半部分和右半部分的值;密钥扩展过程中第 1 轮子密钥的 PC-1 选择置换、PC-2 选择置换、循环左移位后的值(可以二进制显示,也可以十六进制显示).编程要求:C、C+、Java 、Ruby 等实现控制台编程语言题目列表:(6) DES 算法加密和解密实现3. 3DES 算法加密和解密实现(共 4 题)实现 3DES 算法 EEE3、EEE2 、EDE3、EDE2 四种模式中一种。其中 EEE3 表示 3个密钥,EEE2 表示 2 个密钥。(1)实现 3DES 算法的加密和解密,完成 DES 加密过程,输入明文,能加
10、密得到正确密文(密文以十六进制显示) 。完成 DES 解密过程,输入密文(十六进制) ,能解密得到正确明文(字符形式) 。-第 4 页/共 16 页-(2)明文加密之后密文,必须能正确解密出相应明文(3)明文尾部必须进行填充。例如 ECB 模式下,DES 算法 8 个字符一组,若输入10 个字符“1111111111” ,则需要分为 2 组,第 1 组 8 个字符,第 2 组 2 个字符,则需要填充。若输入 8 个字符“11111111” ,刚好 1 组,则需要填充增加 1 组明文。(4)尾部填充方法为除最后一个字符填充字符数,其余全填充为“0”字符。例如输入明文“1111111111” ,第
11、 1 组明文输入“11111111” ,第二组填充之后明文“11000006”。如输入明文“11111111” ,第 1 组明文输入“11111111 ”,第二组填充之后明文“00000008” 。(5)DES 算法加密和解密,调用变换函数完成。(6)操作简单,界面美观。输出要求:(1)用函数实现把字符与二进制相互转换过程,并输出转换后的结果;用函数实现十六进制与二进制相互转换过程。(2)中间结果包括:3DES 算法中,3 次调用加密或解密的输出(十六进制) 。编程要求:C、C+、Java 、Ruby 等实现控制台编程语言题目列表:(7) 基于 EEE3 模式的 3DES 算法加密和解密实现(
12、8) 基于 EEE2 模式的 3DES 算法加密和解密实现(9) 基于 EDE3 模式的 3DES 算法加密和解密实现(10) 基于 EDE2 模式的 3DES 算法加密和解密实现4. AES 算法加密和解密实现(共 3 题)实现 AES 算法加密和解密详细过程。功能要求:(1)输入 16 个字符做明文,128、192、256bits 3 种密钥长度可任意选择一种密钥长度。例如选择 128bits 密钥,可以输入 16 个字符作为密钥;例如 “1111111111111111”;(2)输入明文和密钥字符转换为十六进制(3)轮密钥加、字节替代、列混合、行移位、X 乘; AES 密钥扩展整个过程、
13、加密和解密整个过程分别写成函数,调用变换函数完成。(4)完成 AES 加密过程和 AES 解密过程;(5)明文加密之后密文,必须能正确解密出相应明文,同时参照 fips-197 确定代码编写的正确性。(6)操作简单,界面美观输出要求:(1)输出的格式和要求参照 fips-197。即密钥加、字节替代、行移位、列混合和它们的逆操作,以及密钥扩展过程的每一步操作后都要输出相应的值(展示一轮就可以,十六进制) 。学院_班级_姓名_学号_密封线内不答题-第 5 页/共 15 页-(2)密钥加、字节替代、行移位、列混合等写成函数;(3)可以在标准的基础上进行改变,使得演示更直观。例如列混合的 X 乘法部分
14、可以细化,字节替代部分还可以给出计算过程等等。编程要求:C、C+、Java 、Ruby 等实现控制台编程语言题目列表:(11) 128 bits 密钥长度的 AES 密码算法实现(12) 192 bits 密钥长度的 AES 密码算法实现(13) 256 bits 密钥长度的 AES 密码算法实现5. 基于 AES 算法密码工作模式实现(共 5 题)基于密钥长度 128bits 的 AES 算法的 ECB、CBC 、OFB、CFB 、CTR 5 种密码工作模式中的一种模式,实现加密和解密功能。功能要求:(1)明文输入字符长度至少大于 16 字符长度,尾部必须进行填充。例如 ECB 模式下,AE
15、S 算法 16 个字符一组,若输入 20 个字符“11111111111111111111 ”,则需要分为 2 组,第 1 组 16 个字符,第 2 组 4 个字符,则需要填充。若输入 16 个字符“1111111111111111”,刚好 1 组,则需要填充增加 1 组明文。(2)尾部填充方法为全部填充“0”字符数。例如输入明文“11111111111111111111”,第 1 组明文输入“1111111111111111 ”,第二组填充之后明文“1111000000000000”.如输入明文“1111111111111111” ,第 1 组明文输入“11111111”,第二组填充之后明文
16、“0000000000000000”.(3)对于 OFB、CFB 模式,每次反馈长度可以设定为 8 bits;输入明文长度至少为32 bits;明文分组长度由反馈长度确定。(4)CBC 、OFB、CFB、CRT 的 IV 初始变量为输入 16 个字符;(5)CRT 模式下,计数器初值可输入或者随机生成(二进制数或者 16 进制数) ,但后续计数器值自动加 1 操作(6)AES 算法下不同模式下需要的加密或解密功能。AES 加密和解密都用函数实现。输出要求:(1)密文解密中,最后一组密文解密出明文显示,需要去掉填充字符后的明文。(2)中间结果显示要求:ECB 模式加密过程显示出每组明文(字符)和
17、密文(十六进制) ,解密过程显示出每组解密的密文(十六进制)和明文(字符) 。CBC 模式加密过程显示出每组待加密的明文(字符) ,明文对应的 16 进制表示,与明文异或的数的 16 进制表示,每次 DES 加密的输入(即与反馈密文异或的值,十六进制) ,密文(十六进制) ;解密过程显示出每组待解密密文,DES 解密之后输出(十六进制) ,与解密输出值异或的数的 16 进制以及与密文反馈值异或后明文(字符) 。(3)对于 OFB、CFB、CTR 模式,输出 AES 算法加密的输入和输出的数的 16 进制,并把每组明文和密文,以及移位寄存器的中间结果的 16 进制输出来。编程要求:C、C+、Ja
18、va 、Ruby 等实现控制台编程语言题目列表:-第 6 页/共 16 页-(14) 基于 AES 算法 ECB 运行模式实现(15) 基于 AES 算法 CBC 运行模式实现(16) 基于 AES 算法 OFB 运行模式实现(17) 基于 AES 算法 CFB 运行模式实现(18) 基于 AES 算法 CTR 运行模式实现6. SM4 算法加密和解密实现(共 1 题)实现 SM4 算法加密和解密详细过程。功能要求:(1)输入 16 个字符做明文,例如 “1111111111111111”;128bits 可以输入 16 个字符作为密钥; (2)输入明文和密钥字符转换为十六进制(3)轮函数变换
19、 F(合成置换、非线性变换 S 盒查找、线性变换 L) ,密钥扩展整个过程、加密和解密整个过程分别写成函数,调用变换函数完成。(4)完成 SM4 加密过程和 SM4 解密过程;(5)明文加密之后密文,必须能正确解密出相应明文,并与书中例题对比确认代码编写是否正确。(6)操作简单,界面美观输出要求:(1)输出 F 函数的各个变换,即合成置换、非线性变换 S 盒查找、线性变换 L,以及密钥扩展过程的每一步操作后都要输出相应的值(展示一轮就可以,十六进制) 。(2)合成置换、非线性变换 S 盒查找、线性变换 L 等写成函数;编程要求:C、C+、Java 、Ruby 等实现控制台编程语言题目列表:(1
20、9) SM4 算法加密和解密实现6. 各类 Hash 算法实现(共 5 题)实现 MD5、SHA-1、SHA-256、SHA-384、SHA-512 以及 SHA-3 哈希算法功能要求:(1)输入字符作为消息,输出固定长度的哈希值;(2)把输入的字符转换为二进制;(3)完成填充过程;(4)消息的长度可以在 1-200 个字符内;(5)完成哈希值计算;(6)操作简单,界面美观(7)与标准进行对比,验证程序代码的正确性。输出要求:学院_班级_姓名_学号_密封线内不答题-第 7 页/共 15 页-(1)把输入的字符转换为二进制并输出,输出为 16 进制数;(2)根据所选择 Hash 算法不同,完成消
21、息的填充。例如 SHA 等算法,按 512 比特一组输出,输出为 16 进制数;SHA-512 则按 1024 比特一组输出; SHA-3 算法则按照算法要求给出填充过程;(3)压缩函数的输出参考标准。涉及到进一步细化的操作要给出详细的过程。比如第一个寄存器 A 的输出要细化,要求中间涉及到的每一个变量及每一步的过程结果都有输出(一轮变换中间结果) 。编程要求:C、C+、Java 、Ruby 等实现控制台编程语言题目列表:(20)MD5 哈希算法实现(21) SHA-1 哈希算法实现(22)SHA-256 哈希算法实现(23)SHA-384 哈希算法实现(24)SHA-512 哈希算法实现(2
22、5)SHA-3 消息摘要算法实现7. RSA 加密算法及数字签名算法(共 2 题)下面的描述以 RSA 加密算法为例,签名算法可以参考相关要求。功能要求:(1)产生两个奇数,判断是否是素数。素数要求:一个介于 210-211,一个介于 216-217。先用小于 1000 以内的素数去试除,再使用 Miller-Rabin 概率检测算法进行检测,(2)计算得到 n=pq 的值和 (n)的值。(3)设定加密用的参数 e=17,用辗转相除法求得解密用的参数 d。(4)设默认要加密的明文为 32655,使用模重复平方法对该明文进行加密。(5)用平方乘算法对第(4)加密后的密文进行解密。输出要求:(1)
23、输出奇数的产生过程,用函数实现产生满足要求的奇数;(2)输出用小素数试除的判断过程,并输出每次试除之后的余数,用函数实现一次试除并返回试除之后的余数;(3)Miller-Rabin 概率检测算法运行 5 次,输出检测过程及结果。用函数实现一次Miller-Rabin 概率检测算法并返回检测结果;(4)如果不是奇素数,输出下一个奇数产生的规则;(5)用函数实现辗转相除法,并返回参数 d;(6)用函数实现模重复平方法,并返回密文;(7)用函数实现平方乘算法,并返回明文;(8)输出显示可以是 DOS 界面也可以是对话框等界面。-第 8 页/共 16 页-编程要求:C、C+、Java 、Ruby 等实
24、现控制台编程语言题目列表:(26)RSA 算法加密解密实现(27)RSA 签名算法实现8. ElGamal 加密算法及数字签名算法(共 2 题)下面的描述以 RSA 加密算法为例,签名算法可以参考相关要求即可。功能要求:(1)产生一个奇数 p,判断是否是素数。素数要求介于 214-215。先用小于 20 的素数去试除,再使用 Miller-Rabin 概率检测算法进行检测,(2)求得模 p 的一个原根,要求原根的值介于 25-210;(3)设定用户的私钥 介于 29-211, 。使用平方乘算法计算得到用户的公钥 y.(4)设默认要加密的明文为 32655,加密时用户选择的随机数 k 介于 25
25、-27,使用模重复平方法对该明文进行加密。(5)用平方乘算法对第(4)加密后的密文进行解密。输出要求:(1)输出奇数的产生过程,用函数实现产生满足要求的奇数;(2)输出用小素数试除的判断过程,并输出每次试除之后的余数,用函数实现一次试除并返回试除之后的余数;(3)Miller-Rabin 概率检测算法运行 5 次,输出检测过程及结果。用函数实现一次Miller-Rabin 概率检测算法并返回检测结果;(4)如果不是奇素数,输出下一个奇数产生的规则;(5)输出产生模 p 的一个原根的过程;(6)输出选择的私钥 x,并输出使用平方乘算法计算得到用户的公钥 y 的过程;(7)输出用户选择的随机数 k
26、,以及使用模重复平方法对该明文进行加密的过程。编程要求:C、C+、Java 、Ruby 等实现控制台编程语言题目列表:(28)ELGmal 算法加密和解密实现(29)ELGmal 签名算法实现9. DH 密钥协商算法功能要求:(1)产生一个奇数 p,判断是否是素数。素数要求介于 214-215。先用小于 20 的素数去试除,再使用 Miller-Rabin 概率检测算法进行检测,(2)求得模 p 的一个原根,要求原根的值介于 25-210;(3)输出双方选择的随机数,随机数介于 25-27,使用模重复平方法进行计算,输出双方的计算结果;学院_班级_姓名_学号_密封线内不答题-第 9 页/共 1
27、5 页-(4)网络传输方面,可以是 C/S 模式,也可以是 B/S 模式;(5)输出最后协商的密钥;输出要求:(1)素数及原根的选择,给出相应算法实现中间结果;(2)输出使用模重复平方法进行计算的过程和结果。题目列表:(30)DH 密钥协商算法实现-第 10 页/共 16 页-第二大类(组件的图形化界面设计,算法可调用已有编程接口完成,也可自行编写密码算法代码)1.密码工作模式演示程序实现 (共 15 道题)使用(如 Java、VC+,C#, Python,Perl、Php 等)编程语言实现ECB、CBC、OFB、CTR、CFB 5 种中任意一种密码工作模式的图形化演示程序。下面以基于 DES
28、 算法的 CBC 工作模式为例说明具体功能要求。分组加密明文分组 P1密文分组 C1K分组加密明文分组 P2密文分组 C2K分组加密明文分组 PN密文分组 CNK. . .( a ) 加密初始变量 ( I V )密文分组 C1密文分组 C2密文分组 CN分组解密K分组解密K分组解密K. . .明文分组 P1明文分组 P2明文分组 PN( b ) 解密初始变量 ( I V )图 1 CBC 模式的加密解密过程基本要求:1、如图 1 可视化实现 CBC 工作模式。图 1 的分组加密和分组解密可以直接调用编程语言 DES 算法实现提供的接口函数实现,不需要自行编写密码算法。但不能直接选择调用编程语言 DES-CBC 模式的接口直接实现。2、图形化界面设计要求:(1)采用图形化界面演示 CBC 模式的加密和解密运行演示过程(参考图 2 所示。还可以更加详细,比如输出界面中初始向量和明文分组对应字符的 16 进制数值,以及异或之后的结果) ,至少加密和解密 4 组明文,若最后 1 组不够分组长度,尾部需要自行进行填充,填充方法可参考密码学教材选择相关填充方法。(2)加密算法密钥和初始变量 IV 的输入界面.
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。