




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
学院_班级_姓名_学号_密封线内不答题成都信息工程大学考试试卷2016 2017 学年第 1 学期课程名称: 密码算法程序设计 使用班级: 信安、信对14级 试卷形式:开卷闭卷 试题一二三四五六七八九十总分得分选题要求:每道题目(100分)每人任选1题(题目重选同学,实现算法的编程语言不得相同),即同一种编程语言中每班同学选题不能重复。请各位同学务必认真看清楚题目要求,然后认真选题。选题一旦确定,原则上不能更改题目。若需要更改题目,需提前与指导老师商量。课程设计安排:1、总的课程设计时间7-12(或13周);2、班委或者学委组织选题,并统计完成,7周周五之前把选题表发到各班课程设计指导老师邮箱;3、大概安排二次课程设计中期检查(具体时间由各指导老师安排)。答辩要求:1、熟悉所选题目密码算法的基本原理(密钥长度,明文长度,加密和解密算法核心过程);2、算法实现的核心代码;3、答辩时需要带的文档:课程设计源代码(自备电脑)和课程设计文档(纸质版)答辩安排:1、提前完成课程设计的同学,可以申请提前答辩,提前答辩次数和时间由各指导老师自行安排(具体时间和地点到时候再确定);2、最后答辩时间大概安排在12周(具体时间和地点到时通知)。密码学课程设计指导教师联系方式:信安实验班13级:张仕斌 邮箱 信抗13级: 万武南 邮箱 nan_信安13级: 张金全 邮箱 选择下面其中一题,按要求完成课程设计。第一大类:(按照每道题目要求编写密码算法过程实现代码,密码算法不可调用编译软件现有密码算法实现接口,可以DOS(控制台)界面)1. 基于DES算法密码工作模式实现(共5题)基于DES算法的ECB、CBC、OFB、CFB、CTR 5种密码工作模式,实现其中一种模式的加密和解密功能。功能要求:(1)对于ECB、CBC和CTR模式,明文字符输入至少大于8个字符长度,明文尾部必须进行填充。例如ECB模式下,DES算法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 bits;输入明文长度至少为32 bits;明文分组长度由反馈长度确定。(4)CBC、OFB、CFB、CRT的IV初始变量为输入8个字符;(5)CRT模式下,计数器初值可输入或者随机生成(二进制数或者16进制数),但后续计数器值自动加1操作(解释:上次有学生随机数是8个字符性质的数字,然后在字符数字的基础上加1)(6)DES算法下不同模式下需要的加密或解密功能。DES加密和解密都用函数实现。输出要求:(1)密文解密中,最后一组密文解密出明文显示,需要去掉填充字符后的明文。(2)中间结果显示要求:ECB模式加密过程显示出每组明文(字符)和密文(十六进制),解密过程显示出每组解密的密文(十六进制)和明文(字符)。CBC模式加密过程显示出每组待加密的明文(字符),明文对应的16进制表示,与明文异或的数的16进制表示,每次DES加密的输入(即与反馈密文异或的值,十六进制),密文(十六进制);解密过程显示出每组待解密密文,DES解密之后输出(十六进制),与解密输出值异或的数的16进制以及与密文反馈值异或后明文(字符)。(3)对于OFB、CFB、CTR模式,输出DES算法加密的输入和输出的数的16进制,并把每组明文和密文,以及移位寄存器的中间结果的16进制输出来。编程要求:C、C+、Java、Ruby实现控制台编程语言题目列表:(1) 基于DES算法ECB运行模式实现(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盒、P置换、与前面32位异或、IP逆置换等都要求写成函数; PC-1,循环移位,PC-2写成函数;DES密钥扩展整个过程、加密和解密整个过程分别写成函数,调用变换函数完成。(4)完成DES加密过程,输入明文,能加密得到正确密文(密文以十六进制显示)(5)完成DES解密过程,输入密文(十六进制),能解密得到正确明文(字符形式)。(6)明文加密之后密文,必须能正确解密出相应明文(7)操作简单,界面美观。输出要求:(1)用函数实现把字符与二进制相互转换过程,并输出转换后的结果;用函数实现十六进制与二进制相互转换过程。(2)中间结果包括:输出一轮加密中的IP初始置换、E盒扩展、与子密钥异或、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加密过程,输入明文,能加密得到正确密文(密文以十六进制显示)。完成DES解密过程,输入密文(十六进制),能解密得到正确明文(字符形式)。(2)明文加密之后密文,必须能正确解密出相应明文(3)明文尾部必须进行填充。例如ECB模式下,DES算法8个字符一组,若输入10个字符“1111111111”,则需要分为2组,第1组8个字符,第2组2个字符,则需要填充。若输入8个字符“11111111”,刚好1组,则需要填充增加1组明文。(4)尾部填充方法为除最后一个字符填充字符数,其余全填充为“0”字符。例如输入明文“1111111111”,第1组明文输入“11111111”,第二组填充之后明文“11000006”。如输入明文“11111111”,第1组明文输入“11111111”,第二组填充之后明文“00000008”。(5)DES算法加密和解密,调用变换函数完成。(6)操作简单,界面美观。输出要求:(1)用函数实现把字符与二进制相互转换过程,并输出转换后的结果;用函数实现十六进制与二进制相互转换过程。(2)中间结果包括:3DES算法中,3次调用加密或解密的输出(十六进制)。编程要求:C、C+、Java、Ruby等实现控制台编程语言题目列表:(7) 基于EEE3模式的3DES算法加密和解密实现(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密钥扩展整个过程、加密和解密整个过程分别写成函数,调用变换函数完成。(4)完成AES加密过程和AES解密过程;(5)明文加密之后密文,必须能正确解密出相应明文,同时参照fips-197确定代码编写的正确性。(6)操作简单,界面美观输出要求:(1)输出的格式和要求参照fips-197。即密钥加、字节替代、行移位、列混合和它们的逆操作,以及密钥扩展过程的每一步操作后都要输出相应的值(展示一轮就可以,十六进制)。(2)密钥加、字节替代、行移位、列混合等写成函数;(3)可以在标准的基础上进行改变,使得演示更直观。例如列混合的X乘法部分可以细化,字节替代部分还可以给出计算过程等等。编程要求: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模式下,AES算法16个字符一组,若输入20个字符“11111111111111111111”,则需要分为2组,第1组16个字符,第2组4个字符,则需要填充。若输入16个字符“1111111111111111”,刚好1组,则需要填充增加1组明文。(2)尾部填充方法为全部填充“0”字符数。例如输入明文“11111111111111111111”,第1组明文输入“1111111111111111”,第二组填充之后明文“1111000000000000”.如输入明文“1111111111111111”,第1组明文输入“11111111”,第二组填充之后明文“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模式加密过程显示出每组明文(字符)和密文(十六进制),解密过程显示出每组解密的密文(十六进制)和明文(字符)。CBC模式加密过程显示出每组待加密的明文(字符),明文对应的16进制表示,与明文异或的数的16进制表示,每次DES加密的输入(即与反馈密文异或的值,十六进制),密文(十六进制);解密过程显示出每组待解密密文,DES解密之后输出(十六进制),与解密输出值异或的数的16进制以及与密文反馈值异或后明文(字符)。(3)对于OFB、CFB、CTR模式,输出AES算法加密的输入和输出的数的16进制,并把每组明文和密文,以及移位寄存器的中间结果的16进制输出来。编程要求:C、C+、Java、Ruby等实现控制台编程语言题目列表:(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)轮函数变换F(合成置换、非线性变换S盒查找、线性变换L),密钥扩展整个过程、加密和解密整个过程分别写成函数,调用变换函数完成。(4)完成SM4加密过程和SM4解密过程;(5)明文加密之后密文,必须能正确解密出相应明文,并与书中例题对比确认代码编写是否正确。(6)操作简单,界面美观输出要求:(1)输出F函数的各个变换,即合成置换、非线性变换S盒查找、线性变换L,以及密钥扩展过程的每一步操作后都要输出相应的值(展示一轮就可以,十六进制)。(2)合成置换、非线性变换S盒查找、线性变换L等写成函数;编程要求:C、C+、Java、Ruby等实现控制台编程语言题目列表: (19) SM4算法加密和解密实现6. 各类Hash算法实现(共5题)实现MD5、SHA-1、SHA-256、SHA-384、SHA-512以及SHA-3哈希算法功能要求:(1)输入字符作为消息,输出固定长度的哈希值;(2)把输入的字符转换为二进制;(3)完成填充过程;(4)消息的长度可以在1-200个字符内;(5)完成哈希值计算;(6)操作简单,界面美观(7)与标准进行对比,验证程序代码的正确性。输出要求:(1)把输入的字符转换为二进制并输出,输出为16进制数;(2)根据所选择Hash算法不同,完成消息的填充。例如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哈希算法实现(25)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)输出奇数的产生过程,用函数实现产生满足要求的奇数;(2)输出用小素数试除的判断过程,并输出每次试除之后的余数,用函数实现一次试除并返回试除之后的余数;(3)Miller-Rabin概率检测算法运行5次,输出检测过程及结果。用函数实现一次Miller-Rabin概率检测算法并返回检测结果;(4)如果不是奇素数,输出下一个奇数产生的规则;(5)用函数实现辗转相除法,并返回参数d;(6)用函数实现模重复平方法,并返回密文;(7)用函数实现平方乘算法,并返回明文;(8)输出显示可以是DOS界面也可以是对话框等界面。编程要求:C、C+、Java、Ruby等实现控制台编程语言题目列表:(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-27,使用模重复平方法对该明文进行加密。(5)用平方乘算法对第(4)加密后的密文进行解密。输出要求:(1)输出奇数的产生过程,用函数实现产生满足要求的奇数;(2)输出用小素数试除的判断过程,并输出每次试除之后的余数,用函数实现一次试除并返回试除之后的余数;(3)Miller-Rabin概率检测算法运行5次,输出检测过程及结果。用函数实现一次Miller-Rabin概率检测算法并返回检测结果;(4)如果不是奇素数,输出下一个奇数产生的规则;(5)输出产生模p的一个原根的过程;(6)输出选择的私钥x,并输出使用平方乘算法计算得到用户的公钥y的过程;(7)输出用户选择的随机数k,以及使用模重复平方法对该明文进行加密的过程。编程要求:C、C+、Java、Ruby等实现控制台编程语言题目列表:(28)ELGmal算法加密和解密实现(29)ELGmal签名算法实现9. DH密钥协商算法功能要求:(1)产生一个奇数p,判断是否是素数。素数要求介于214-215。先用小于20的素数去试除,再使用Miller-Rabin概率检测算法进行检测,(2)求得模p的一个原根,要求原根的值介于25-210;(3)输出双方选择的随机数,随机数介于25-27,使用模重复平方法进行计算,输出双方的计算结果;(4)网络传输方面,可以是C/S模式,也可以是B/S模式;(5)输出最后协商的密钥;输出要求:(1)素数及原根的选择,给出相应算法实现中间结果;(2)输出使用模重复平方法进行计算的过程和结果。题目列表:(30)DH密钥协商算法实现第二大类(组件的图形化界面设计,算法可调用已有编程接口完成,也可自行编写密码算法代码)1.密码工作模式演示程序实现 (共15道题)使用(如Java、VC+,C#,Python,Perl、Php等)编程语言实现ECB、CBC、OFB、CTR、CFB 5种中任意一种密码工作模式的图形化演示程序。下面以基于DES算法的CBC工作模式为例说明具体功能要求。图1CBC模式的加密解密过程基本要求:1、如图1可视化实现CBC工作模式。图1的分组加密和分组解密可以直接调用编程语言DES算法实现提供的接口函数实现,不需要自行编写密码算法。但不能直接选择调用编程语言DES-CBC模式的接口直接实现。2、图形化界面设计要求:(1)采用图形化界面演示CBC模式的加密和解密运行演示过程(参考图2 所示。还可以更加详细,比如输出界面中初始向量和明文分组对应字符的16进制数值,以及异或之后的结果),至少加密和解密4组明文,若最后1组不够分组长度,尾部需要自行进行填充,填充方法可参考密码学教材选择相关填充方法。(2)加密算法密钥和初始变量IV的输入界面.图2 CBC模式演示界面参考图说明:选择其他分组密码算法和密码工作模式要求类似,比如3DES、AES算法;密码工作模式除了CBC模式外,还可以选择OFB,CFB,CRT、ECB其他4种工作模式,其他工作模式的加密和解密流程可以参考相关教材。具体功能实现要求类似基于DES算法的CBC演示程序实现要求和界面设计。 题目列表:(31)基于DES算法的CBC演示程序实现(32)基于DES算法的ECB演示程序实现 (33)基于DES算法的OFB演示程序实现 (34)基于DES算法的CFB演示程序实现 (35)基于DES算法的CTR演示程序实现(36)基于AES算法的CBC演示程序实现(37)基于AES算法的ECB演示程序实现 (38)基于AES算法的OFB演示程序实现 (39)基于AES算法的CFB演示程序实现 (40)基于AES算法的CTR演示程序实现(41)基于3DES算法的CBC演示程序实现(42)基于3DES算法的ECB演示程序实现 (43)基于3DES算法的OFB演示程序实现 (44)基于3DES算法的CFB演示程序实现 (45)基于3DES算法的CTR演示程序实现2. RSA数字签名算法演示程序实现 (共5道题)使用(如Java、VC+,C#,Python,Perl、Php等)编程语言,调用编程语言现有的RSA和哈希函数算法接口,完成数字签名产生和验证的演示程序实现。消息Hash函数消息摘要发方A相等?收方B签名算法私钥A签名消息签名消息Hash函数消息摘要验证算法公钥A签名有效y签名无效n图3 RSA数字签名算法基本要求:1、RSA和哈希函数算法实现可以直接调用编程语言提供的接口函数实现,不需要自行编写密码算法;2、RSA密钥对的数据可以从文件读取和存储3、发送方和接收方的数据传输方面,可以是C/S模式,也可以是B/S模式进行传输;(需要网络编程)4、界面设计要求:1)RSA密钥对简单生成过程的图形化演示,密钥对可以用文件形式保存和读取2)采用图形化在界面中完整的演示RSA的数字签名过程(如图3所示),发方的签名消息可以采用文件形式保存进行,接收方可以读取文件获得签名消息和公钥。3)接收方和发送方数据传输采用网络编程实现说明:题目中提到的数字签名算法RSA; 哈希函数除了SHA-1算法外,也可以选择其他的消息摘要算法做实现,比如SHA-256,SHA-384,SHA-512等,其他的要求可以参考上面界面设计可以参考第二类第1题。题目列表: (46) RSA数字签名算法演示程序(SHA-512)(47) RSA算法数字签名算法演示程序(SHA-1)(48) RSA算法数字签名算法演示程序(SHA-256)(49) RSA算法数字签名算法演示程序(SHA-384)(50) RSA算法数字签名算法演示程序(SHA-3)3. 基于分组密码的消息认证过程演示程序 (共12道题)使用(如Java、VC+,C#,Python,Perl、Php等)编程语言,调用现有分组密码和哈希函数算法接口,完成消息认证的演示程序实现。比较MCHMHMHH 图4消息认证产生和认证过程下面以基于3DES算法的消息认证过程演示程序(SHA-1)为例,说明题目需要实现功能功能要求:1、DES算法和SHA-1算法实现可以直接调用所选择的编程语言提供的接口函数实现,不需要自行编写密码算法;2、发送方和接收方的数据传输方面,可以是C/S模式,也可以是B/S模式进行传输;(需要网络编程)3、界面设计要求:1)图形化界面密钥和消息M的输入界面,2)采用图形
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 碎石加工项目竣工验收与质量保证方案
- 轻型钢结构工程后期维护与管理方案
- 公路工程验收与质量检验方案
- 老旧小区改造项目总体规划与布局方案
- 建筑外立面装饰设计方案
- 教育数字化赋能强国战略的价值与途径
- 部编版语文一年级下册第四单元提纲计划
- 2025年风力发电行业风电场风能发电系统智能化解决方案创新分析报告
- 2025年多式联运信息平台物流行业数字化转型与智慧物流发展报告
- 电力系统质量管理实施措施
- 苏教版六年级上册数学教案:19分数与分数相乘及分数乘法练习
- 2025学校食堂食品安全培训
- 疗养协议合同
- 人工智能在财务预测中的应用-全面剖析
- 药品临床综合评价解读
- 输液反应应急预案及流程
- 计算机基础知识完整课件
- 针灸理疗院感风险评估与应对措施
- 水库巡查基本知识
- 动火作业安全培训题库
- 物业管理中的服务质量监控与改进机制
评论
0/150
提交评论