密码学课程实验指导书
密码学基础课程设计指导书
《现代密码学基础》课程设计指导书杨柳编湖南科技大学计算机科学与工程学院2014年12月一、概述本课程在简要复习数学基础知识之后,探讨了密码学研究的基本问题:通过不安全的通信媒介如何进行安全通信。
也可以理解为关心任何希望限制不诚实者达到目的的问题,把度量和评价一个密码体制(协议)的安全性作为一个重点。
就目前来说,密码学的研究领域已从消息加密扩大到了数字签名、消息认证、身份识别、抗欺骗协议等。
无疑,在整个教学过程中非常重视密码学的基础,当然包括数学基础。
并针对实际的密码体制(协议)强调设计与分析(攻击),对现代密码学的主要研究问题都进行了介绍。
对于密码学这样的课程,同学们一定要从理论、技术、应用三个方面进行学习与思考。
密码体制(协议)无疑是我们的学习重点,密码体制(协议)也可以单纯地理解为计算机算法,从而有设计、分析、证明、实现的问题。
实现密码体制(协议)就是我们经常讲的八个字:模型、算法、程序、测试。
二、课程设计步骤课程设计步骤要求如下:模型从数学的角度看,解决任何问题都要建立一个数学模型,对于密码学来说更是如此。
我们还可以认为,数据结构中的存储结构也是模型。
于是这一部分的任务就是建立起问题的逻辑结构和存储结构,为算法设计和编码实现打下基础。
算法这一部分对同学们的要求是能看懂书上的常用算法,并对其中的参数可以进行调整和设置,能实现和应用它们。
程序编码实现得到程序。
4. 测试5. 提交课程设计报告三、课程设计报告编写要求课程设计报告开头标明课程设计题目、设计者的班级、姓名、学号和完成日期,内容包括:模型、算法、程序、测试四个部分。
四、设计要求可以只做第7题,不做第7题的要做第1题-第6题。
五、课程设计题目题目1 大整数运算包的设计与实现1.问题描述大整数运算是现代密码学算法实现的基础,重要性不言而喻。
大整数我们指的是二进制位512、1024和2048的数,一般的语言不支持。
2.基本要求以类库头文件的形式实现。
密码学案例实验报告书
一、实验背景随着信息技术的飞速发展,信息安全问题日益突出。
密码学作为保障信息安全的核心技术,在数据加密、身份认证、数字签名等领域发挥着重要作用。
为了加深对密码学原理的理解,提高实际应用能力,我们开展了本次密码学案例实验。
二、实验目的1. 掌握DES加密算法的基本原理和操作步骤。
2. 熟悉RSA加密算法的原理和应用。
3. 学习数字签名技术的应用。
4. 培养动手实践能力,提高解决实际问题的能力。
三、实验内容1. DES加密算法(1)实验目的:了解DES加密算法的基本原理,掌握DES加密和解密过程。
(2)实验内容:① 设计一个简单的DES加密程序,实现明文到密文的转换。
② 设计一个简单的DES解密程序,实现密文到明文的转换。
(3)实验步骤:① 编写DES加密程序,输入明文和密钥,输出密文。
② 编写DES解密程序,输入密文和密钥,输出明文。
2. RSA加密算法(1)实验目的:了解RSA加密算法的基本原理,掌握RSA加密和解密过程。
(2)实验内容:① 设计一个简单的RSA加密程序,实现明文到密文的转换。
② 设计一个简单的RSA解密程序,实现密文到明文的转换。
(3)实验步骤:① 编写RSA加密程序,输入明文和密钥对,输出密文。
② 编写RSA解密程序,输入密文和私钥,输出明文。
3. 数字签名技术(1)实验目的:了解数字签名技术的基本原理,掌握数字签名的生成和验证过程。
(2)实验内容:① 设计一个简单的数字签名程序,实现签名生成和验证。
(3)实验步骤:① 编写数字签名程序,输入明文、私钥和签名算法,输出签名。
② 编写数字签名验证程序,输入明文、公钥和签名,验证签名是否正确。
四、实验结果与分析1. DES加密算法实验结果通过编写DES加密和解密程序,成功实现了明文到密文和密文到明文的转换。
实验结果表明,DES加密算法在保证数据安全的同时,具有较高的效率。
2. RSA加密算法实验结果通过编写RSA加密和解密程序,成功实现了明文到密文和密文到明文的转换。
《密码学》课程设计实验报告-分组密码DES2
《密码学》课程设计实验报告实验序号:02 实验项目名称:分组密码AES图:AES轮函数结构图:AES轮密钥产生2.AES 算法的基本运算(重点) 方法:通过编程代码实现下列运算:(1)8(2)GF 上的加法(教材 p83定义3-2) (为了描述方便,用花括号表示16进制,下同) 例:{BC }⊕{6A }={D6}(下图中的A 3,3⊕K 3,3=B 3,3)计算或编程方法:按位异或(提示——C 、Java 等语言中的^运算符) (2)8(2)GF 上的多项式加法(教材 p83定义3-7) 例:a(x)={BC}x 3+{42} x 2+{9F} x+{4C}K(x)= {6A}x 3+{00} x 2+{5C} x+{57} a(x) ⊕K(x)= {D6}x 3+{42} x 2+{C3} x+{1B}计算或编程方法:按位异或(提示——C 、Java 等语言中的^运算符)A 0,0A 0,1A 0,2A 0,3A 1,0A 1,1A 1,2A 1,3A 2,0A 2,1A 2,2A 2,3A 3,0A 3,1A 3,2A 3,3K 0,0K 0,1K 0,2K 0,3K 1,0K 1,1K 1,2K 1,3K 2,0K 2,1K 2,2K 2,3K 3,0K 3,1K 3,2K 3,3+B 0,0B 0,1B 0,2B 0,3B 1,0B 1,1B 1,2B 1,3B 2,0B 2,1B 2,2B 2,3B 3,0B 3,1B 3,2B 3,3A 3,3 ⊕K 3,3 =B 3,3 (mod 2)对于AES 中的轮密钥加运算,即可以表示为对应“字节”的加法,每格相加,即定义3-2;也可以表示为对应32位“字”的加法,每列相加,即定义3-7;甚至可以表示为整个128位“状态”的按位异或。
思考:在不同CPU 架构下,哪种表示方法的执行速度最快?(4)8(2)GF 上的多项式乘法(教材 p83定义3-8、p93优化方案) (a )AES 中的列混合运算的实现其中的运算按列(32位字)实现,当然也可表述为下面的4×4的字节矩阵相乘:大家手工计算时,按列进行表述较为简单:例如下面的列混合计算:其中的第一列运算步骤为:在GF(28)中,加法就是按位XOR操作,乘法是根据在上述方程所示的规则执行的。
密码学基础实验讲义
常熟理工学院计算机科学与工程系《密码学基础》实验指导书网络工程系2009年7月实验一、熟悉CAP4一、实验目的与要求通过实验,使学生对密码学有一定的感性认识;学会正确使用CAP(Cryptographic Analysis Program v4)软件,验证课堂中所学的古典密码算法;为学习现代密码算法及其应用奠定基础。
二、实验内容1、熟悉使用CAP4软件2、使用CAP4,验证课本中的一些加密算法,如凯撒密码、仿射密码等。
三、实验指导CAP是由Dr. Richard Spillman专门为教学而研制的密码制作和分析的工具(CAP is a general purpose tool for making and breaking ciphers. It is intended for educational purposes only. Dr. Richard Spillman is not responsible for any lost data or errors in the software.),已经在美国的很多高校得到了广泛地使用,受到了密码学习者的普遍欢迎。
CAP4的软件界面如下:基本涵盖了经典密码学和现代密码学中的算法,主要包括:Simple Shift,ADFGVX,Affine,AutoKey,Bazeries Cylinder,Celluler Automata 1d,Celluler Automata 2d,Column Trasposition,DES, DES Stream,Elgamal,Four Square,Hill,KeyWord,Knapsack,MultiLiteral,Nihilist,Permutation,Playfair,RC4,Rotor,RSA,Vigenere等等。
“Affine”,出现如下图所示的弹出框。
注意:菜单“Encipher”和“Decipher”是灰色的。
现代密码学实验指导书
5. if (a-b ) < 0, (t ← a, a ← b, b ← t ); 6. a ← (a-b )
7. if a = 0, g = 2 g b, input b, end , else goto 4.
(
)
2. 扩展 Euclid 算法
设m ∈ Z + ,b ∈ Z,求 b 的模 m 的乘法逆元 b −1。
z
0.001
其中:以上字母分成 5 组: 1. 2. 3. 4. 5. e 的概率大约为 0.120 t,a,o,i,n,s,h,r 的概率为 0.06-0.09 d,l 的概率大约为 0.4 c,d,m,w,f,g,y.p,b 的概率为 0.015-0.023 v,k,j,x,q,z 的概率小于 0.01
a
0.082
b
0.015
c
0.028
d
0.043
e
0.127
f
0.022
g
0.020
h
0.061
i
0.070
j
0.002
k
0.008
l
0.040
m
0.024
n
0.067
o
0.075
p
0.019
q
0.001
r
0.060
s
0.063
t
0.091
u
0.028
v
0.010
w
0.023
x
0.001
y
0.020
3. 维吉尼亚密码的分析方法
z z 用卡西斯基测试法或重合指数法确定密钥长度 确定每个子密钥
五、
实验报告要求
程序给出源代码和相应的注释,密码分析部分给出详细推导或计算过程和程序实现则要 给出全部代码。
密码学实验1
实验1-1 古典密码算法一.实验原理1.替换密码替换密码算法的原理是使用替换法进行加密,就是将明文中的字符用其他字符替代后形成的密文。
例如:名文字母a、b、c、d用D、E、F、G作对应替换后形成密文。
例如:对于明文字母H,其在字母表中的位置数位8,设k=4,则按照上式计算出来的密文为L。
2.置换密码置换密码算法的原理是不改变明文字符,只将字符在明文中的字母按照给的顺序改变,从而实现明文信息的加密。
置换密码有时候也称为换位密码。
例如:明文为attack begin five,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:a t t a c kb e g i n sa t f I v e根据密钥cipher中的各字母在字母表中出现的先后顺序,给定一个置换:F=(1 4 5 3 2 6)根据上面的置换,将原有矩阵中的字母按照第一列、第四列、第五列、第三列、第二列、第六列的顺序排列,则有下列形式:a a c t t kb i n g e sa i v f f e从而得到密文:abaaiicnvtgftefkse其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
二实验目的通过编程实现替换密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。
三.实验环境运行windows或Linux操作系统的pc机,具有vc等c语言编译环境。
四.实验内容1.根据实验原理部分对替换密码算法的介绍,自己创建明文信息,并选择一个密钥k,编写替换密码算法的实现程序,实现加密和解密操作。
2.根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥k,编写替换密码算法的实现程序,实现加密和解密操作。
五实验步骤1.替换密码其中明文为h,加密参数k=4,字母的个数n=26。
实现环境为turboC(1)代码如下:#include<stdio.h>int encrypt(int n,int k); %声明加密函数int decrypt(int n,int k); %声明解密函数int main(void){encrypt(26,4); %代入加密参数k=4,n=26decrypt(26,4); %代入解密参数k=4,n=26}int encrypt(int n,int k) %加密函数{int c1,c2,c3;char ch;int CRYPT_OK;int CRYPT_ERROR;c1='h'; %声明明文c1=hc2=c1-97; %将明文的值变为7,使26个字母分别对应于0-25 c3=(c2+k)%n; %进行加密变换ch=c3+97; %将加密后的值变为它所对应的ASCII码%判断是否加密成功if(ch!='h'){CRYPT_OK=1;printf("ch=%c",ch);return (CRYPT_OK); %加密成功返回CRYRT_OK}else{CRYPT_ERROR=1;return (CRYPT_ERROR); %加密失败返回CRYPT_ERROR }}%解密函数int decrypt(int n,int k){int c1,c2,c3;char ch1;int CRYPT_OK;int CRYPT_ERROR;c1='l'; %声明密文c1=lc2=c1-97; %将密文变为11,使26个字母对应与整数0-25c3=(c2-k)%n; %进行解密ch1=c3+97; %将解密后的值化成它所对应的ASCII码%判断是否解密成功if(ch1!='l'){CRYPT_OK=1;printf("ch1=%c",ch1);return (CRYPT_OK); 解密成功返回CRYPT_OK}else{CRYPT_ERROR=1;return (CRYPT_ERROR); %解密失败返回CRYPT_ERROR }}(2)运行结果2.置换密码明文为:thiscr yptosy stemis notsec ure,其中加密的矩阵的字母按照第一列,第二列、第三列、第四列、第五列、第六列输出。
密码学实验指导书
密码学及应用实验指导实验1 古典密码实验目的1.理解代替密码学加密过程2.理解置换密码学加密过程实验环境Windows和交换网络结构实验工具VC++6.0和密码工具实验原理一.Caesar(恺撒)密码Caesar密码是传统的代替加密法,Caesar加密变换是:c = (m + k) mod 26 其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也为密钥。
很容易得到相应的Caesar解密变换是: m = D(c) = (c – k) mod 26二.单表置换密码单表置换密码也是一种传统的代替密码算法,在算法中维护着一个置换表,这个置换表记录了明文和密文的对照关系。
在单表置换算法中,密钥是由一组英文字符和空格组成的,称之为密钥词组。
zZ实验步骤凯撒密码本练习主机A、B为一组,C、D为一组,E、F为一组。
首先使用“快照X”恢复Windows系统环境。
一.手动完成Caesar密码(1)在实验原理部分我们已经了解了Caesar密码的基本原理,那么请同学们写出当密钥k=3时,对应明文:data security has evolved rapidly的密文:。
(2)进入实验平台,单击工具栏中的“密码工具”按钮,启动密码工具,在向导区点击“Caesar密码”。
在明文输入区输入明文:data security has evolved rapidly。
将密钥k调节到3,查看相应的密文,并与你手动加密的密文进行比较。
请根据密钥验证密文与明文对应关系是否正确。
二.Caesar加密(1)进入“加密解密”|“Caesar密码”视图,在明文输入区输入明文(明文应为英文),单击“加密”按钮进行加密。
请将明文记录在这里:。
(2)调节密钥k的微调按钮或者对照表的移位按钮,选择合适的密钥k值,并记下该密钥k值用于同组主机的解密。
加密工作完成后,单击“导出”按钮将密文默认导出到Caesar共享文件夹(D:\Work\Encryption\Caesar\)中,默认文件名为Caesar密文.txt。
《密码学》课程设计实验报告-分组密码工作模式
《密码学》课程设计实验报告实验序号:03 实验项目名称:分组密码工作模式分组工作模式具体说明➢电话本模式⏹直接利用分组密码对明文的各分组进行加密⏹缺点1.不能解决短块问题2.容易暴露明文的数据模式。
在计算机系统中,许多数据都具有某种固有的模式,这主要是由数据冗余和数据结构引起的。
例如,各种计算机语言的语句和指令都十分有限,因为在程序中便表现为少量的语句和指令的大量重复⏹流程图➢明密文链接模式⏹设明文M=(M1,⋯,M n),相应的密文C=(C1,⋯,C n)C i={E(M i⊕Z,K), i=1E(M i⊕M i−1⊕C i−1,K), i=2,⋯,n⏹特点1.加解密错误传播无界2.无法处理短块⏹流程图➢密文链接模式⏹由于明密文链接模式具有加解密错误传播无界的特性,而磁盘等文件通常希望错误传播有界,这时可采用密文链接模式⏹设明文M=(M1,⋯,M n),相应的密文C=(C1,⋯,C n)C i={E(M i⊕Z,K), i=1E(M i⊕C i−1,K), i=2,⋯,n⏹特点1.无法处理短块2.加密错误传播无界,解密错误传播有界➢输出反馈模式⏹将一个分组密码转换为一个密钥序列产生器,从而可以实现用分组密码按流密码的方式进行加解密。
⏹特点1.工作模式的安全性取决于分组密码本身的安全性2.可以解决短块加密3.无错误传播4.适用于加密冗余度较大的数据,例如语音和图像数据⏹流程图➢密文反馈模式⏹与输出反馈的工作原理基本相同,所不同的仅仅是反馈到移位寄存器R的不是E输出中的最右s位,而是密文c i的s位⏹流程图➢X CBC模式⏹X CBC模式解决了CBC模式要求明文数据的长度是密码分组长度的整数倍的限制,可以处理任意长的数据⏹优点1.可以处理任意长度的数据2.适用于计算产生检测数据完整性的消息认证码MAC⏹缺点1.使用3个密钥,密钥的存储和加解密控制都比较麻烦2.接受双方需要共享填充的消息长度➢CTR模式⏹与密文反馈工作模式和输出反馈工作模式一样,把分组密码转换为序列密码,在本质上是利用分组密码产生密钥序列,按序列密码的方式进行加密⏹优点1.可并行,效率高2.适合任意长度的数据3.加解密速度快⏹缺点1.没有错误传播,不适用于数据完整性验证⏹流程图五、分析与讨论1)分组密码不同的工作模式各有各的特点,例如有些工作模式需要处理短块,有些则不需要;有些模式具有错误传播无界的特性,有些则没有。
《密码学》实验大纲
课程编号:05212002课程名称:密码学课程性质:专业基础必修总学时:63(授课学时48,实验15)学分:3适用对象:信息安全专业、信息与计算科学专业、电子信息工程专业、计算机科学与技术专业、通信工程专业《密码学》实验教学大纲一、教育目标通过这些实验题目,使学生对于《密码学》课程教学的一些重要环节获得切实的感性认识,由此达到真正理解和领会的地步,并引导学生动手、动脑,使他们的有关实践能力与创新能力得以养成和提高。
二、教学说明1. 密码学实验是密码学教学的一个重要的辅助环节,是为加强学生对于有关理论和原理的感性认识和启发学生创造性思维而设计的;它的先修课程为《C语言程序设计》或《汇编语言程序设计》,学生必须在打好相应基础的前提下开展本课程。
2. 辅导教师必须深入学生之中,了解他(她)们的实际动手情况,尤其要通过实际检查,使每位学生切实学会使用有关程序语言的调试工具、切实领会有关程序编制的实质性要点和要求。
三、内容和基本要求实验一随机全排列生成程序及其应用开发(一)实验内容:1.编制生成0~n(n≤255)的一个全排列的程序,可选择下列两个方法之一或自行设计另外方法:方法1:从一个随机文件读取n+1字节数据d0, d1, L, d n。
由预先取定的一个0~n的全排列P(比如,可为0~n的自然排列)开始,依次对i=n, n-1, L,1,计算:j=d i-1+d i (mod i)交换P的第i项第j项(在此注意我们假定P从第0项开始)。
方法2:用一个随机函数产生m(m>n)字节数据d1, d2, L, d m。
对d1(mod (n+1)), d2(mod (n+1)), L, d m(mod (n+1))依次考察,把后面出现的与前相同者去掉;在最后剩下的数据中,把没有出现的0~n依序补写于后面。
2.对第一步生成随机全排列的程序,自己设计一种应用并予以实现。
(二)实验要求:1.程序须对不超过255的正整数n都容易生成0~n的一个全排列;2.对较小的n,抓图显示随机全排列生成程序的计算结果(附页),数据不能出现明显错误;3.每位同学设计的“一种对于随机全排列生成程序的应用”须有个性化特点、不与别人雷同。
课内实验指导书
课内实验指导书院系:理学院数学系班级:信计071学生姓名:方金学号:0709300113 课程名称:信息编码与密码学实验题目:离散信道信道容量的计算指导教师:胡建平朱振菊2011年4月25日实验三 离散信道信道容量的计算一、 实验目的1.进一步熟悉一般离散信道信道容量的计算方法;2.进一步复习巩固通过迭代法进行数学计算的基本思想;3.学习如何将复杂的公式转化为程序。
二、 实验内容与要求计算给定转移概率分布矩阵后的信道的信道容量,并计算相应的最大入口分布。
实验具体要求如下:1. 独立设计信道的转移概率矩阵进行信道容量的计算;2. 至少计算两种不同信道的信道容量,并输出相应的最大入口分布。
三、 实验原理根据信道容量的迭代算法进行计算,算法主要步骤如下:1: 设定初始的入口分布为均匀分布1i p r=,相对误差门限δ,C =-∞ 2: 迭代计算: 1) 1():i jiij ij r ijii p p Q q q p p ==←∑ 2) 111exp log exp log s ji ij j i r s ji ij i j p q p p q ===⎛⎫ ⎪⎝⎭←⎛⎫ ⎪⎝⎭∑∑∑ 3) 11log exp log r s ji ij i j C p q ==⎡⎤⎛⎫←⎢⎥ ⎪⎢⎥⎝⎭⎣⎦∑∑ 3. 如果计算出的相邻两次的互信息之差C δ∆≤,则迭代终止,当前的C 即为所求的信道的信道容量,相应的入口分布为最大入口分布。
四、 注意事项(1) 请认真完成实验报告,可以和同学一起研究学习,但坚决杜绝互相抄袭实验报告,发现作弊者实验成绩取消;(2) 需要上交实验报告和实验指导书纸制文件各1份,并提交电子版存档;(3) 按实验要求编写程序,并附上程序代码和结果图;(4) 总结在编程过程中遇到的问题、解决办法和收获。
密码学课程设计实验报告.
密码学课程设计实验报告⏹标准DES加解密实现⏹弱密钥过滤⏹短块处理(密文挪用)⏹3圈DES差分攻击计算机科学与技术学院信息安全0801班李晨U200714977指导老师:崔国华2011年3月28日目录一、实验平台与环境 (4)二、DES加解密相关内容 (4)1. 标准DES原理与编程实现 (4)1.1 标准DES基本框架 (4)1.2 G函数实现 (8)1.3 内部密钥生成 (9)2. DES弱密钥过滤原理与编程实现(*) (11)2.1 弱密钥定义 (11)2.2 弱密钥过滤程序实现 (11)3. DES短块处理(密文挪用)原理与编程实现 (12)3.1 密文挪用加解密原理 (12)3.2 对于小于64bit数据块的处理 (17)4. 整体界面设计 (17)4.1 界面效果预览 (17)4.2 实现特点 (18)1) DES加解密、弱密钥过滤、短块处理完全集成 (18)2) 支持数据块操作和文件操作 (18)3) 密钥校验功能 (18)4) 随机密钥产生功能 (18)5. 程序主体设计 (18)5.1 类BaseCode (18)5.2 类DESCode (20)5.3 类DESHandle (22)6. 实现功能测试 (23)6.1 短块处理 (23)6.2 数据块加解密 (25)6.3 文件加解密......................................................................... 错误!未定义书签。
6.4 弱密钥过滤 (25)6.5 随机密钥生成 (25)6.6 密钥校验 (26)三、3圈DES差分攻击(**) (27)1. 3圈DES差分攻击原理 (27)2. 差分表构造 (28)3. 程序实现 (30)3.1 输入数据结构与管理 (30)3.2 穷举情况统计 (31)3.3 具体破解 (34)4. 整体界面设计 (37)4.1 界面预览 (37)4.2 功能特色 (37)1) 忽略初始和末置换的简单DES实现 (37)2) 适应任意多组破解数据的设计 (37)3) 穷举情况的提醒 (38)5. 实现功能测试 (38)四、总结 (40)1. 加深了对DES的了解 (40)2. 通过差分攻击代码实现,理解了差分的基本原理 (40)3. 应该更好得去把握一个问题 (40)4. 设计能力有待加强 (40)附:核心类声明源代码 (40)一、实验平台与环境操作系统:Windows7开发平台:Microsoft Visual Studio 2008界面设计:MFC核心代码:C++编写二、DES加解密相关内容1.标准DES1.1标准DES内部密钥置换函数\src\BaseCode.cpp异或函数\src\BaseCode.cpp1.2 G 函数实现内部密钥1.3内部密钥生成内部密钥生成实现src\DESCode.cpp2.DES弱密钥过滤原理与编程实现(*)2.1弱密钥定义如果一个密钥生成的16个内部密钥相同,那么这个密钥就是弱密钥。
密码学网络安全实验基本算法AES
淮海工学院计算机工程学院实验报告书课程名:《网络安全技术》题目:常见的密码算法(DES、AES、RSA、MD5)班级:学号姓名:【实验目的】●理解对称加密算法的原理和特点●了解非对称加密机制●理解DES、AES算法的加密原理●理解RSA算法的加密原理【实验人数】每组1人【系统环境】Windows【网络环境】交换网络结构【实验工具】VC++6.0密码工具【实验步骤】一、DES算法1.DES加密解密(1)本机进入“密码工具”|“加密解密”|“DES加密算法”|“加密/解密”页签,在明文输入区输入明文:hello,world(2)在密钥窗口输入8(64位)个字符的密钥k,密钥k= 19940725 。
单击“加密”按钮,将密文导出到DES文件夹(D:\Work\Encryption\DES\)中,通告同组主机获取密文,并将密钥k告诉同组主机。
(3)单击“导入”按钮,从同组主机的的DES共享文件夹中将密文导入,然后在密钥窗口输入被同组主机通告的密钥k,点击“解密”按钮进行DES解密。
(4)将破解后的明文与同组主机记录的明文比较。
2.DES算法本机进入“密码工具”|“加密解密”|“DES加密算法”|“演示”页签,向64位明文中输入8个字符(8*8bit=64),向64位密钥中输入8个字符(8*8bit=64)。
点击“加密”按钮。
完成加密操作,分别点击“初始置换”、“密钥生成演示”、“十六轮加密变换”和“终结置换”按钮,查看初始置换、密钥生成演示、十六轮加密变换和终结置换的详细加密操作流程。
二、AES1.AES加密解密(1)本机进入“密码工具”|“加密解密”|“AES加密算法”|“加密/解密”页签,在明文输入区输入明文:hello,world(2)在密钥窗口输入16(128位)个字符的密钥k,要记住这个密钥以用于解密,密钥k=lijinyi123456789。
单击“加密”按钮,将密文导出到AES文件夹(D:\Work\Encryption\AES\)中,通告同组主机获取密文,并将密钥k告诉同组主机。
密码学的实验报告
一、实验目的1. 了解密码学的基本概念和原理;2. 掌握常用的加密算法和解密算法;3. 学会使用密码学工具进行加密和解密操作;4. 培养学生的实践能力和创新思维。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 密码学库:PyCryptodome三、实验内容1. 加密算法实验1.1 实现DES加密算法1.2 实现AES加密算法1.3 实现RSA加密算法2. 解密算法实验2.1 使用DES解密算法解密加密数据2.2 使用AES解密算法解密加密数据2.3 使用RSA解密算法解密加密数据3. 密钥管理实验3.1 生成DES密钥3.2 生成AES密钥3.3 生成RSA密钥对4. 密码学工具使用实验4.1 使用PyCryptodome库进行加密和解密操作4.2 使用在线加密工具进行加密和解密操作四、实验步骤1. 加密算法实验1.1 实现DES加密算法1.1.1 导入PyCryptodome库中的DES模块;1.1.2 生成DES密钥;1.1.3 使用DES密钥对明文进行加密;1.1.4 输出加密后的密文。
1.2 实现AES加密算法1.2.1 导入PyCryptodome库中的AES模块;1.2.2 生成AES密钥;1.2.3 使用AES密钥对明文进行加密;1.2.4 输出加密后的密文。
1.3 实现RSA加密算法1.3.1 导入PyCryptodome库中的RSA模块;1.3.2 生成RSA密钥对;1.3.3 使用公钥对明文进行加密;1.3.4 输出加密后的密文。
2. 解密算法实验2.1 使用DES解密算法解密加密数据2.1.1 导入PyCryptodome库中的DES模块;2.1.2 使用DES密钥对密文进行解密;2.1.3 输出解密后的明文。
2.2 使用AES解密算法解密加密数据2.2.1 导入PyCryptodome库中的AES模块;2.2.2 使用AES密钥对密文进行解密;2.2.3 输出解密后的明文。
《密码学》课程设计实验报告-数字签名
《密码学》课程设计实验报告实验序号:06 实验项目名称:数字签名RSA签名RSA签名核心代码说明由于在实验报告5中已经对RSA的相关代码进行了分析,这里主要给出签名和验签的代码。
在对某个二进制文件进行签名之前,我们首先需要计算其数据摘要,这里我们采用md5哈希算法,其对应的代码如下md5哈希算法在RSA的签名中,其实就是用私钥进行解密的过程,其对应的代码如下RSA签名其中解密对应的代码如下,pow函数提供了快速幂的功能RSA解密在RSA验签的过程中,其实就是用公钥进行加密的过程,其对应的代码如下RSA验签其中加密对应的算法如下RSA加密RSA签名实验结果演示首先是计算待签名文件的md5值md5结果对得到的md5值进行签名,可以得到如下的结果RSA签名结果对签名进行验签,可以发现成功验证签名验证签名ECC签名代码整体说明相关文件(ecc.py)由于在前面的ECC加解密(实验报告5)中已经对ECC的相关接口进行了介绍,这里我们不再重复。
这里主要给出签名和验签的主要流程签名的主要流程如下1.选择一个随机数k,k∈{1,2,⋯,n−1}2.计算点R(x R,y R)=kG,并记r=x R3.利用保密的解密钥d计算s=(Hasℎ(m)−dr)k−1 (mod n)4.以<r,s>作为消息m的签名,并以<m,r,s>的形式传输或者存储验签的主要流程如下1.计算s−1 (mod n)2.利用公开的加密钥Q计算U(x U,y U)=s−1(Hasℎ(m)G−rQ)3.如果x U=r,则<r,s>是用户A对m的签名ECC签名核心代码说明由于在实验报告5中已经对ECC的相关代码进行了分析,这里主要给出签名和验签的代码。
进行签名的代码主要如下,可以发现和我们上面提到的签名步骤是一一对应的ECC签名进行验签的代码如下,和上述我们提到的验签步骤也是一一对应的ECC验签ECC签名实验结果演示同RSA签名一样,我们首先需要计算文件对应的数据摘要,这里我们使用md5哈希算法md5数据摘要接着对数据摘要进行签名,得到如下的签名结果ECC签名结果对得到的签名进行验签,可以发现成功验证ECC验签五、分析与讨论1)与ECC的签名相比,RSA的签名和验签显得更为优雅,即解密对应签名,加密对应验签2)和RSA签名相比,ECC引入了随机数k,使得即使对同一个数据进行签名,产生的结果也可能不一样,这在一定程度上增加了ECC签名的安全性3)与传统的分组密码相比,使用公钥密码实现数字签名非常方便且更加安全。
密码学实验指导
密码学实验指导目录实验一凯撒密码算法实验 1 实验二维吉利亚密码算法实验 5 实验三普莱费尔密码算法实验 9 实验四 IDEA密码算法实验 17 实验五 BCH纠错编码算法任务书 27实验一凯撒密码算法实验1 实验目的通过实验熟练掌握凯撒密码算法,学会凯撒密码算法程序设计,提高C++程序设计能力。
2 实验学时:2实验类别:验证实验■综合性实验□设计性实验□3 实验环境软件环境Windows Xp/Windows 2000Visual c++/Turbo c++ 3.0硬件系统Pentium 4 3.0G 512MRAM 计算机等4 算法原理按照a~z依次对应0~25编码,变量K存放密钥-正整数。
变量M存放一明文字符ASCII码,变量C存放M中的数据经加密后得到的一密文字符的ASCII码。
加密算法:C≡(M+K)mod 26,如此继续下去,实现逐个字符进行加密。
5 实验步骤与内容1)编写程序2)编辑录入3)记录调试及进行情况4)程序结构说明文档5)程序使用说明文档6 思考密钥K的有效的最小取值范围7 实验总结与体会8 要求提交完整的实验报告9 参考程序代码#include <iostream>#include <string>using namespace std;//获取密钥函数getKey()int getKey(){int key;cout<<"请输入密钥:";cin>>key;return key;}//将明文中的字符全部转化为大写的函数change()void change(char s[]){int i;for(i=0;i<strlen(s);i++){if(s[i]>96&&s[i]<122)s[i] = s[i]-32;}}//判断输入的明文格式是否有误的函数getError()//有误则返回0,否则就返回1int getError(char s[]){int i,error;for(i=0;i<strlen(s);i++){if((s[i]>65&&s[i]<=82)||(s[i]>96&&s[i]<=122)){error = 1;}else {error = 0;break;}}return error;}//将明文转化为密文的函数getCodevoid getCode(char s[],char ss[],int key) {int i,j;cout<<"译出的密文:";for(i = 0;i<strlen(ss);i++){for(j = 0;j<26;j++){if(ss[i]==s[j]){cout<<s[(j+key)%26];}}}cout<<endl;;}void main(){char ss[26],incode[1000];int i,key,asc=65;for(i = 0;i<26;i++){ss[i] = asc++;}key = getKey();cout<<"请输入密文:\n";getchar('\n');gets(incode);if(getError(incode)==0){cout<<"您的输入有误!请重新输入!\n";exit(1);}change(incode);getCode(ss,incode,key);}实验二维吉利亚密码算法实验1 实验目的通过实验熟练掌握维吉利亚密码算法,学会维吉利亚密码算法程序设计,提高C++程序设计能力。
密码学课程实验指导书
密码学课程实验指导书一、密码学课程实验的意义当前,重视实验与实践教育是各国高等教育界的发展潮流,实验与实践教学与理论教学是相辅相成的,具有同等重要的地位。
它是在开放教育的基础上,为配合理论教学、培养学生分析问题和解决问题的能力以及加强训练学生专业实践能力而设置的教学环节;对于完成教学计划、落实教学大纲,确保教学质量,培养学生分析问题、解决问题的能力和实践操作技能更具有特别重要的意义。
密码学是信息安全与保密技术的核心,是一门实践性非常强的课程,实践教学是培养密码技术应用性人才的重要途径,实践教学质量的好环,实际上也决定了应用型人才培养质量的高低。
因此,加强密码学课程实践教学环节,提高实践教学质量,对培养高质量的应用型人才至关重要。
二、实验的目的与要求本实验指导书并不给出一些非常具体的实验步骤,让学生们照着做一遍的实验“指导书”。
这样的实验无法发掘这群充满活力的人群的智慧和创造性。
本书中的每个实验都是按照这种模式编写的:先给出有关的理论介绍,然后抛砖引玉地给出几范例,再给出一个简单的实验要求。
同时,希望每个实验都完成准备-预约-实验-答辩4个环节。
实验内容包含对称密码和公钥密码二个方面,以DES和RSA为代表通过具体实验使学生掌握这二类密码的结构、特性、攻击方法以及实际应用技术。
第一部分数据加密标准DES1.实验目的(1)掌握DES中各加密函数对其性能影响;(2)DES的特性分析,包括互补性和弱密钥;(3)DES的实际应用,包括各种数据类型的加/脱密、DES的短块处理。
2.实验原理信息加密根据采用的密钥类型可以划分为对称密码算法和非对称密码算法。
对称密码算法是指加密系统的加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导出另一个,更形象的说就是用同一把钥匙开锁和解锁。
在对称密码算法的发展历史中曾出现过多种优秀的算法,包括DES 、3DES 、AES 等。
下面我们以DES 算法为例介绍对称密码算法的实现机制。
密码学基础实验指导书
《密码学基础》实验指导
20 / 20 学年第学期
班级:
组号:
组长:
实验地点:
指导教师:
计算机科学与工程学院
2009年10月
实验目录
实验一、熟悉CAP4 (1)
实验二古典密码算法Playfair密码 (3)
实验三古典密码算法仿射密码 (5)
实验四古典密码算法Vigenère密码 (7)
实验五、对称密码算法DES (9)
实验六、对称密码算法IDEA (11)
实验七、对称密码算法AES (13)
实验八、非对称密码算法RSA (15)
实验九、数字签名算法DSS (17)
实验十、HASH算法MD5 (19)
实验一、熟悉CAP4
实验二古典密码算法Playfair密码
实验三古典密码算法仿射密码
实验四古典密码算法Vigenère密码
实验五、对称密码算法DES
实验六、对称密码算法IDEA
实验七、对称密码算法AES
实验八、非对称密码算法RSA
实验九、数字签名算法DSS
实验十、HASH算法MD5。
密码与信息安全实验指导书
. .密码与信息安全实验指导书皖西学院2013年7月前言本课程是信息与计算科学专业的专业选修课程。
计算机安全是一个受到全社会关注并亟待解决的大问题。
本课程主要阐述如何保护自己的计算机以与网络系统中的数据不被破坏和丢失,如何保证数据在传输过程中的安全,如何避免数据被篡改以与确保数据的真实性等问题。
本课程的主要任务是通过各个教学环节,配合实验手段,使学生掌握计算机系统安全的主要概念和技术,培养学生诊断系统错误、分析系统安全隐患、防备系统遭受攻击的能力。
为从事计算机系统管理、科学研究打下坚实的基础。
使学生掌握计算机系统安全基本知识,如容涉与信息安全的基本理论框架,包括网络安全框架如安全模型,安全体系结构等;对称密码技术、公开钥密码技术、HASH函数、MAC函数等基本密码学理论,同时也涉与到更高层的基于密码技术的安全协议分析和应用,也兼顾网络入侵、恶意软件、防火墙等网络安全技术。
本实验将主要集中在涉与密码技术的实验容上。
信息安全理论和技术作为一门综合性科目,要求学生应具备较全面较扎实的理论基础,课程基础涉与围广,课程理论相对比较抽象和繁杂,因而同学们在学习中会有一定难度。
为了使理论教学与实践教学紧密结合,注重学生的理解和动手能力培养,我们安排了信息安全系列实验容来配合教学环节,希望同学们能认真独立的完成实验容,增进对课程容的理解,提高自己理论联系实际的能力,提高自己独立思考解决问题的能力。
本实验采用了一些信息安全方面开放源码的较成熟的软件包和部分商业化并可用于教学目的的软件产品作为实验的基本平台,这有利于同学们能够充分利用因特网进行更多的实验容的收集和进一步研究的展开,充分利用网络信息安全相关资源,将更有助于本实验容的良好完成。
目录一、信息安全基本理论简介3二、实验基本环境简介7三、系列实验8实验一 VMWARE虚拟机和WIN2000安装8 实验二 Sniffer网络侦听和pcap编程12 实验三对称加密算法实验18实验四公钥算法实验23实验五微软CA组件安装和配置26实验六 ECA系统的安装和配置28实验七 SureCA系统的安装和配置43实验八安全电子的配置和使用59实验九安全WEB访问的配置和使用65实验十 OPENSSL软件包的使用74实验十一 OpenVPN配置和使用79一、信息安全基本理论简介1.对称密码技术对称密码加密也称常规密码加密、单钥密码加密、秘密密钥加密,它包括许多数据加密方法。
现代密码学与加解密技术实验指导书
现代密码学与加解密技术实验指导书高天寒编东北大学软件学院2007年8月软件工程实验指导书目录一、现代密码学与加解密技术实验指导书选用范围二、实验基本目的与要求三、实验题目四、实验过程与具体要求五、实验交付成果说明六、主要参考文献一、现代密码学与加解密技术实验指导书选用范围实验名称:《现代密码学与加解密技术》实验所属课程:现代密码学与加解密技术所属专业:信息安全领域方向:信息安全学时:16学时适用学生:信息安全专业的学生先修课要求:信息安全数学基础、计算机引论(C语言)、计算机组成原理与体系结构二、实验基本目的与要求现代密码学与加解密技术实验是本课程重要的实践教学环节。
实验的目的不仅仅是验证理论知识,更重要的是通过实验加强学生的实验手段与实践技能,培养学生分析问题、解决问题、应用知识的能力和创新精神,全面提高学生的综合素质。
通过本实验简要了解密码学以及现代密码算法的基本知识,学会常用文件加密的实现、了解系统加密解密技术,具体掌握几种加解密方法。
实验后完成要求撰写实验报告,报告内容包括题目、测试数据、运行结果、遇到的问题和解决方法、关键代码或程序清单,学生可以在实验报告中提出对实验的建议和意见。
三、实验题目1、Vigenere的编程实现2、Column permutation cipher 的编程实现3、DES的编程实现四、实验过程与具体要求1、Vigenere的编程实现使用C语言设计实现古典密码体制中的Vigenere密码,并加/解密一个文件2、Column permutation 密码的编程实现编程(建议使用C语言)实现古典密码体制中的Column permutation 密码,并加/解密一个字符串或文件3、DES的编程实现使用C语言设计实现DES密码,并加/解密一个文件五、实验交付成果说明交付成果:Vigenere密码C语言源代码及使用说明Column permutation 密码C语言源代码及使用说明DES密码C语言源代码及使用说明交付方式:源代码硬拷贝使用说明A4纸打印交付方式:班长汇总,交付给负责老师六、主要参考文献1.Richard J.Spillman:《CLASSICAL AND CONTEMPORARY CRYPTOLOGY》,清华大学出版社,2005-72.William Stallings: Cryptography and Network Security: Principles and Practice. 2nd ed. Prentice Hall, 1998.3.杨波著:《现代密码学》,清华大学出版社,2003-8.4.Wenbo Mao. Modern Cryptography: Theory and Practicce. 电子工业出版社,2004-7.5.许主洪著:《加密与解密-密码技术剖析与实战应用》,人民邮电出版社,2002-8.6.张焕国,刘玉珍著:《密码学引论》,武汉大学出版社,2003. 7.段钢著:《加密与解密》,电子工业出版社,2005-3.。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
密码学课程实验指导书一、密码学课程实验的意义当前,重视实验与实践教育是各国高等教育界的发展潮流,实验与实践教学与理论教学是相辅相成的,具有同等重要的地位。
它是在开放教育的基础上,为配合理论教学、培养学生分析问题和解决问题的能力以及加强训练学生专业实践能力而设置的教学环节;对于完成教学计划、落实教学大纲,确保教学质量,培养学生分析问题、解决问题的能力和实践操作技能更具有特别重要的意义。
密码学是信息安全与保密技术的核心,是一门实践性非常强的课程,实践教学是培养密码技术应用性人才的重要途径,实践教学质量的好环,实际上也决定了应用型人才培养质量的高低。
因此,加强密码学课程实践教学环节,提高实践教学质量,对培养高质量的应用型人才至关重要。
二、实验的目的与要求本实验指导书并不给出一些非常具体的实验步骤,让学生们照着做一遍的实验“指导书”。
这样的实验无法发掘这群充满活力的人群的智慧和创造性。
本书中的每个实验都是按照这种模式编写的:先给出有关的理论介绍,然后抛砖引玉地给出几范例,再给出一个简单的实验要求。
同时,希望每个实验都完成准备-预约-实验-答辩4个环节。
实验内容包含对称密码和公钥密码二个方面,以DES和RSA为代表通过具体实验使学生掌握这二类密码的结构、特性、攻击方法以及实际应用技术。
第一部分数据加密标准DES1.实验目的(1)掌握DES中各加密函数对其性能影响;(2)DES的特性分析,包括互补性和弱密钥;(3)DES的实际应用,包括各种数据类型的加/脱密、DES的短块处理。
2.实验原理信息加密根据采用的密钥类型可以划分为对称密码算法和非对称密码算法。
对称密码算法是指加密系统的加密密钥和解密密钥相同,或者虽然不同,但是可以从其中任意一个推导出另一个,更形象的说就是用同一把钥匙开锁和解锁。
在对称密码算法的发展历史中曾出现过多种优秀的算法,包括DES 、3DES 、AES 等。
下面我们以DES 算法为例介绍对称密码算法的实现机制。
DES 算法是由美国IBM 公司在20世纪70年代提出,并被美国政府、美国国家标准局和美国国家标准协会采纳和承认的一种标准加密算法。
它属于分组加密算法,即在明文加密和密文解密过程中,信息都是按照固定长度分组后进行处理的。
混淆和扩散是它采用的两个最重要的安全特性。
混淆是指通过密码算法使明文和密文以及密钥的关系非常复杂,无法从数学上描述或者统计。
扩散是指明文和密钥中每一位信息的变动,都会影响到密文中许多位信息的变动,从而隐藏统计上的特性,增加密码的安全。
DES 算法将明文分成64位大小的众多数据块,即分组长度为64位,同时用56位密钥对64位明文信息加密,最终形成64位的密文。
如果明文长度不足64位,则将其扩展为64位(如补零等方法)。
具体加密过程首先是将输入的数据进行初始换位(IP ),即将明文M 中数据的排列顺序按一定的规则重新排列,生成新的数据序列,以打乱原来的次序。
然后将变换后的数据平分成左右两部分,左边记为L 0,右边记为R 0,然后对R 0实行在子密钥(由加密密钥产生)控制下的变换f ,结果记为01(,)f R K ,再与L 0做逐位异或运算,其结果记为R 1,R 0则作为下一轮的L 1。
如此循环16轮,最后得到L 16、R 16。
再对L 16、R 16实行逆初始置换IP -1,即可得到加密数据。
解密过程与此类似,不同之处仅在于子密钥的使用顺序正好相反。
DES 全部16轮的加密过程如图1-1所示。
DES 的加密算法包括3个基本函数。
1.初始换位(IP )它的作用是把输入的64位数据块的排列顺序打乱,每位数据按照下面换位规则重新组合,即将第58位换到第1位,第50位换到第2位,……,依次类推,重组后的64位输出分为L 0、R 0(左、右)两部分,每部分分别为32位。
58,50,42,36,18,10,2,60,52,44,36,28,20,12,462,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8 57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,361,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7 R 0和K 1经过01(,)f R K 变换后的输出结果,再和L 0进行异或运算,输出结果做为R 1,R 0则赋给L 1。
L 1和R 1同样再做类似运算生成L 2和R 2,……,经过16次运算后生成L 16的R 16。
2.f 函数f 函数是多个置换函数和替代函数的组合函数,它将32位比特的输入变换为32位的输出,如图1-2所示。
R i 经过扩展运算E 变换后扩展为48位的i E(R ),与K i+1进行异或运算后输出的结果分成8组,每组6比特的并联B ,B=B 1B 2B 3B 4B 5B 6B 7B 8,再经过8个S 盒的选择压缩运算转换为4位,8个4位合并为32位后再经过P 变换输出为32位的i i+1f(R ,K )。
其中,扩展运算E 与置换P 主要作用是增加算法的扩展效果。
4.逆初始置换函数IP-1它将L16和R16作为输入,进行逆初始换位得到密文输出。
逆初始换位是初始位的逆运算,换位规则如下所列:40,8,48,16,56,24,64,32,39,7,47,15,55,23,63,3138,6,46,14,54,22,62,30,37,5,45,13,53,21,61,2936,4,44,12,52,20,60,28,35,3,43,11,51,19,59,2734,2,42,10,50,18,58,26,33,1,41,9,49,17,57,25DES的加密算法中除了上面介绍的3个基本函数,还有一个非常重要的功能模块,即子密钥的生成模块,具体子密钥的产生流程如图1-3所示。
输入的初始密钥值为64位,但DES算法规定,基中第8、16、 (64)是奇偶检验位,不参与EDS运算。
所以,实际可用位数只有56位,经过缩小选择换位表1-1即密钥置换PC-1的变换后,初始密钥的位数由64位变成了56位,将其平分为两部分C0、D0,然后分别进行第1次循环左移,得到C1、D1,将C1(28位)合并后得到56位的输出结果,再经过缩小选择换位表1-2即密钥置换PC-2,从而得到了密钥K1(48位),依次类推,便可得到K2、……、K16。
需要注意的是,16次循环左移对应的左移位数要依据表1-3的规则进行。
3.实验环境运行Windows或Linux操作系统的PC机,具有gcc(Linux)、VS(Windows)等C语言编译环境。
4.实验题目及要求表1-1 缩小选择换位表1表1-2 缩小选择换位表2表1-3 左移位数规则实验1 DES的编程实现(1)实验原理本实验的原理包括DES算法的加密过程、脱密过程和16个内部密钥生成过程,已在前面进行详细地描述。
(2)实验要求① 输入加密密钥和一串有意义的汉字,显示相应的加密结果;输入密文和脱密密钥,显示所还原的一串有意义的汉字。
② 设计用户界面,界面中要有加/脱密选择、输入明/密文栏、密钥栏和加/脱密结果显示栏。
实验2 DES 的短块处理(1)实验意义在采用DES 实施加密的实际应用中,为增加安全性,通常要求明文的长度等于密文的长度,特别是在对数据库的数据项加密时有这一要求,因此必须设计一种有效的处理方法,使得当明文长度不是64bit 倍数时,加密产生的结果满足上述要求。
(2)实验原理① 将明文X 按64bit 分块,若X 的长度为64bit 的倍数时,则按常规的方法实施加密否则② 设121n n x x x x x +=,其中1n x +长度<64bit (称为短块),加密方式如图1-4所示,脱密方式如图1-5所示。
图1-4 含有短块的加密方式图1-5 含有短块的脱密方式 (3)实验要求① 针对有短块和无短块二种情况,编写并实现具有短块处理功能的DES 通用加/脱密软件。
②短块处理对用户透明。
③设计用户界面,其结构与实验1的用户界面基本相同,但要增设明文长度和密文长度栏。
实验3 DES弱密钥过滤软件设计(1)实验原理①DES中弱密钥的危害<1>明文加密二次后还原成明文<2> 存在232个明文,其密文=明文②过滤软件设计原理弱密钥是使16个内部密钥相同的密钥,由DES的密钥生成算法推出它的4个弱密钥③过滤软件设计<1> 编程求出4个弱密钥<2> 每当用户输入密钥K时,将K与四个弱密钥比较,若K不是弱密钥,则取定密钥K,否则界面窗口显示“请重新输入一个新密钥”的提示。
(2)实验要求①设计用户界面,当用户输入弱密钥时会出现提示信息②编制过滤程序,实现对弱密钥的过滤实验4 DES密码强度测试软件设计(1)实验原理①密文的随机性密文的随机性反映了密码的强度,通过设计随机性测试算法来测试DES的密码强度②随机性测试方法对于一个用DES加密产生的密文序列,分别以下面三种情况设计测试随机性工具<1> 0和1在密文中所占比例<2> 00、01、10、11在密文中所占比例<3> 000、001、010、011、100、101、110、111在密文中所占比例(2)实验要求①设计随机性测试工具②设计用户界面,显示测试结果③修改DES的S盒,对修改后的DES密文进行随机性测试,显示测试结果,在实验报告中对结果进行评价。
第二部分公钥密码RSA1.实验目的①通过实际编程掌握非对称密码算法RSA的加密和解密以及快速加、解密过程,加深对非对称密码算法的认识。
②实现对RSA的解密密钥攻击。
2.实验原理前面讲的对称密码算法要求通信双方通过交换密钥实现使用同一个密钥,这在密钥的管理、发布和安全性方面存在很多问题,而非对称密码算法解决了这个问题。
非对称密码算法是指一个加密系统的加密密钥和解密密钥是不同的,或者说不能用其中一个推导出另一个。
在非对称密码算法的两个密钥中,一个是用于加密的密钥,它是可以公开的,称为公钥;另一个是用于解密的密钥,是保密的,称为私钥。
非对称密码算法解决了对称密码体制中密钥管理的难题,并提供了对信息发送人的身份进行验证手段,是现代密码学最重要的发明。
RSA密码体制是目前为止最成功的非对称密码算法,它是在1977年由Rivest、Shamir和Adleman提出的第一个比较完善的非对称密码算法。
它的安全性是建立在“大数分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因子的计算量相当大。
虽然它的安全性还未能得到理论证明,但经过20多年的密码分析和攻击,迄今仍然被实践证明是安全的。