实验报告_密码学

合集下载

密码学案例实验报告书

密码学案例实验报告书

一、实验背景随着信息技术的飞速发展,信息安全问题日益突出。

密码学作为保障信息安全的核心技术,在数据加密、身份认证、数字签名等领域发挥着重要作用。

为了加深对密码学原理的理解,提高实际应用能力,我们开展了本次密码学案例实验。

二、实验目的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加密和解密程序,成功实现了明文到密文和密文到明文的转换。

现代密码算法实验报告(3篇)

现代密码算法实验报告(3篇)

第1篇一、实验目的1. 了解现代密码学的基本原理和数论基础知识;2. 掌握非对称密码体制的著名代表RSA加密算法的工作原理和流程;3. 设计实现一个简单的密钥系统;4. 掌握常用加密算法AES和DES的原理及实现。

二、实验内容1. RSA加密算法实验2. AES加密算法实验3. DES加密算法实验三、实验原理1. RSA加密算法RSA算法是一种非对称加密算法,由罗纳德·李维斯特、阿迪·沙米尔和伦纳德·阿德曼三位密码学家于1977年提出。

其基本原理是选择两个大质数p和q,计算它们的乘积n=pq,并计算欧拉函数φ(n)=(p-1)(q-1)。

选择一个整数e,满足1<e<φ(n)且e与φ(n)互质。

计算e关于φ(n)的模逆元d。

公开密钥为(e,n),私有密钥为(d,n)。

加密过程为C=Me mod n,解密过程为M=Cd mod n。

2. AES加密算法AES(Advanced Encryption Standard)是一种分组加密算法,采用128位分组大小和128、192或256位密钥长度。

AES算法主要分为四个阶段:初始轮、密钥扩展、中间轮和最终轮。

每个轮包括字节替换、行移位、列混淆和轮密钥加。

3. DES加密算法DES(Data Encryption Standard)是一种分组加密算法,采用64位分组大小和56位密钥长度。

DES算法主要分为16轮,每轮包括置换、置换-置换、S盒替换和密钥加。

四、实验步骤及内容1. RSA加密算法实验(1)选择两个大质数p和q,计算n=pq和φ(n)=(p-1)(q-1);(2)选择一个整数e,满足1<e<φ(n)且e与φ(n)互质,计算e关于φ(n)的模逆元d;(3)生成公开密钥(e,n)和私有密钥(d,n);(4)用公钥对明文进行加密,用私钥对密文进行解密。

2. AES加密算法实验(1)选择一个128、192或256位密钥;(2)初始化初始轮密钥;(3)进行16轮加密操作,包括字节替换、行移位、列混淆和轮密钥加;(4)输出加密后的密文。

《密码学》课程设计实验报告-分组密码DES2

《密码学》课程设计实验报告-分组密码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操作,乘法是根据在上述方程所示的规则执行的。

经典密码学实验报告

经典密码学实验报告

一、实验目的1. 了解经典密码学的基本原理和算法;2. 掌握古典密码的加密和解密方法;3. 通过编程实现古典密码的加密和解密过程;4. 体验古典密码的破解过程,加深对密码学原理的理解。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发工具:PyCharm三、实验内容本次实验主要涉及以下几种古典密码:1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. 移位密码1. 仿射密码(1)原理简介:仿射密码是一种单字母替换密码,加密公式为:Ci = (a pi + b) mod 26,其中,Ci 为密文,pi 为明文,a 和 b 为密钥。

(2)加密和解密代码实现:```pythondef encrypt(plain_text, a, b):cipher_text = ''for char in plain_text:if char.isalpha():cipher_text += chr(((ord(char.upper()) - ord('A') + a b) % 26) + ord('A'))else:cipher_text += charreturn cipher_textdef decrypt(cipher_text, a, b):plain_text = ''for char in cipher_text:if char.isalpha():plain_text += chr(((ord(char.upper()) - ord('A') - a b) % 26) + ord('A'))else:plain_text += charreturn plain_text```2. 单表代替密码(1)原理简介:单表代替密码是一种将明文中的每个字符映射到密文的密码,加密和解密过程是相反的。

密码学实验报告

密码学实验报告

密码学实验报告中文汉字的密码化实验1. 实验简介本实验旨在通过对中文汉字的密码化实验,探究密码学在信息安全领域中的应用。

在本实验中,我们将使用替换密码技术对中文汉字进行加密和解密,并评估其安全性和实用性。

2. 实验步骤2.1 选择密钥在开始实验之前,我们需要选择一个密钥。

密钥是密码算法的关键,它用于对明文进行加密和解密。

在本实验中,我们选择一个包含所有中文汉字的密钥表。

该密钥表将用于替换明文中的汉字,从而实现密码化。

2.2 加密过程加密过程涉及将明文中的汉字替换为对应的密钥表中的汉字。

我们将使用一种称为替换密码的技术来实现加密。

具体步骤如下:步骤一:准备明文 - 选择一段中文汉字作为明文。

步骤二:选择密钥表 - 使用预先准备好的密钥表,其中包含了所有中文汉字的替换映射关系。

步骤三:替换汉字 - 将明文中的每个汉字根据密钥表中的映射进行替换。

步骤四:生成密文 - 将替换后的汉字按照顺序组成密文。

2.3 解密过程解密过程即将密文还原为明文。

在我们的实验中,解密过程与加密过程密切相关,因为它需要使用相同的密钥表进行替换。

具体步骤如下:步骤一:准备密文 - 选择加密过程生成的密文作为输入。

步骤二:选择密钥表 - 使用和加密过程相同的密钥表。

步骤三:替换汉字 - 将密文中的每个汉字根据密钥表中的映射进行替换。

步骤四:生成明文 - 将替换后的汉字按照顺序组成明文。

3. 实验结果与讨论在本实验中,我们选择了一段中文汉字作为明文,并使用已准备好的密钥表进行加密和解密操作。

经过多次实验,我们得到了一些实验结果和相应的讨论。

3.1 加密结果经过加密过程,我们得到了一段由密文组成的结果。

加密后的密文将替换明文中的汉字,使其具有一定的保密性。

然而,我们也发现了一些问题:问题一:密文长度增加 - 密文的长度通常会大于明文的长度,这可能导致在传输和存储过程中的一些问题。

问题二:密钥表可预测 - 由于我们使用了固定的密钥表,攻击者有可能通过分析密文和明文之间的关系来推断出密钥表的内容。

密码学实验报告

密码学实验报告

密码学实验报告信息安全实验报告学号:学生姓名:班级:实验三密码学实验一、古典密码算法实验一、实验目的通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。

二、编译环境运行windows 或linux 操作系统的PC 机,具有gcc、VC 等C语言编译环境。

三、实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。

它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。

下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。

1.替代密码替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。

例如:明文字母a、b、c、d ,用D、E、F、G做对应替换后形成密文。

替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。

下面我们介绍一种典型的单表替代密码,恺撒密码,又叫循环移位密码。

它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代。

它的加密过程可以表示为下面的函数:E= mod n其中:m 为明文字母在字母表中的位置数;n 为字母表中的字母个数;k 为密钥;E为密文字母在字母表中对应的位置数。

例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L:E = mod n = mod 26 = 12 = L2.置换密码置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。

置换密码有时又称为换位密码。

矩阵换位法是实现置换密码的一种常用方法。

它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。

例如,明文为attack begins at five,密钥为cipher,将明文按照每行6 列的形式排在矩阵中,形成如下形式: a ttack b e gins a tfive根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换: 1 2 3 4 5 6 f =1 4 5 32 6根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第5 列,第 3 列,第2列,第 6 列的顺序排列,则有下面形式: a a c t tk b i n g e s a I v f te从而得到密文:abatgftetcnvaiikse其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。

密码学实验报告(AES,RSA)

密码学实验报告(AES,RSA)

华北电力大学实验报告||实验名称现代密码学课程设计课程名称现代密码学||专业班级:学生姓名:学号:成绩:指导教师:实验日期:[综合实验一] AES-128加密算法实现 一、实验目的及要求(1)用C++实现;(2)具有16字节的加密演示;(3)完成4种工作模式下的文件加密与解密:ECB, CBC, CFB,OFB.二、所用仪器、设备计算机、Visual C++软件。

三. 实验原理3.1、设计综述AES 中的操作均是以字节作为基础的,用到的变量也都是以字节为基础。

State 可以用4×4的矩阵表示。

AES 算法结构对加密和解密的操作,算法由轮密钥开始,并用Nr 表示对一个数据分组加密的轮数(加密轮数与密钥长度的关系如表2所示)。

AES 算法的主循环State 矩阵执行1 r N 轮迭代运算,每轮都包括所有 4个阶段的代换,分别是在规范中被称为 SubBytes(字节替换)、ShiftRows(行位移变换)、MixColumns(列混合变换) 和AddRoundKey ,(由于外部输入的加密密钥K 长度有限,所以在算法中要用一个密钥扩展程序(Keyexpansion)把外部密钥 K 扩展成更长的比特串,以生成各轮的加密和解密密钥。

最后执行只包括 3个阶段 (省略 MixColumns 变换)的最后一轮运算。

表2 AES 参数比特。

3.2、字节代替(SubBytes )AES 定义了一个S 盒,State 中每个字节按照如下方式映射为一个新的字节:把该字节的高4位作为行值,低4位作为列值,然后取出S 盒中对应行和列的元素作为输出。

例如,十六进制数{84}。

对应S 盒的行是8列是4,S 盒中该位置对应的值是{5F}。

S 盒是一个由16x16字节组成的矩阵,包含了8位值所能表达的256种可能的变换。

S 盒按照以下方式构造:(1) 逐行按照升序排列的字节值初始化S 盒。

第一行是{00},{01},{02},…,{OF};第二行是{10},{l1},…,{1F}等。

密码学实验报告

密码学实验报告

密码学实验报告摘要:本实验旨在通过实践掌握基本密码学算法的原理和应用。

在本次实验中我们完成了Caesar密码、仿射密码、VIC密码和Hill密码的加密和解密过程,并进行了相应的分析和评价。

实验结果表明,不同的密码算法有各自的优缺点,应根据具体需求进行选择。

一、实验目的1.了解基本密码学算法的原理和应用。

2.通过实践掌握Caesar密码、仿射密码、VIC密码和Hill密码的加密和解密过程。

3.分析和评价各个密码算法的优缺点。

二、实验原理Caesar密码:是一种非常简单的单字母替换密码。

按照字母表上旋转的位置,每个字母都用它在字母表中的下一个字母替代。

仿射密码:通过将明文中的每个字母转换为另一个字母,实现加密。

明文中的每个字母通过使用一组固定的数学函数进行加密。

随机选择这些函数,并按正确的顺序应用它们。

VIC密码:将某些字母替换为其他字母组合的运算称为置换。

VIC密码使用10个钥匙,其中每个钥匙是一个置换。

通过使用不同的键,VIC密码可以很容易地产生四十亿多个不同的密码。

Hill密码:是一种基于线性代数理论的密码算法。

对于一个给定的矩阵α,Hill密码通过将明文划分为每个字母,然后将其与矩阵α乘法来加密,最后将结果映射回字母表中的字母。

三、实验过程1.实现Caesar密码的加密和解密。

2.实现仿射密码的加密和解密。

3.实现VIC密码的加密和解密。

4.实现Hill密码的加密和解密。

5.对各个密码算法进行分析和评价。

四、实验结果1.在Caesar密码中,明文是将每个字母按照一定的步长向右或向左移动来进行加密。

由于其简单性,Caesar密码的加密和解密都很容易,但安全性较低。

2.仿射密码是Caesar密码的扩展版本。

通过随机选择两个数字,仿射密码在加密的过程中使用模运算和线性函数组合对明文进行加密。

由于消息加密和解密都使用数学功能进行计算,因此密钥空间大于Caesar,也比较安全。

3.VIC密码使用多个置换键(通常为10),交替使用它们来完成加密和解密过程。

实验吧_密码学实验报告(3篇)

实验吧_密码学实验报告(3篇)

第1篇一、实验背景密码学是一门研究信息加密与解密的学科,它广泛应用于信息安全领域。

为了更好地理解密码学的基本原理和算法,我们选择了实验吧平台上的密码学实验进行学习。

本次实验旨在通过实际操作,加深对古典密码、对称密码和不对称密码等密码学基本概念的理解,提高密码学应用能力。

二、实验目的1. 理解并掌握古典密码的基本原理和算法;2. 掌握对称密码和不对称密码的基本原理和算法;3. 通过实验操作,提高密码学应用能力;4. 培养团队协作和解决问题的能力。

三、实验内容1. 古典密码实验(1)仿射密码原理:仿射密码是一种单字母替换密码,加密公式为:C = (aP + b) mod 26,其中C为密文字母,P为明文字母,a和b为密钥。

操作步骤:1)编写加密函数encrypt,实现仿射密码加密;2)编写解密函数decrypt,实现仿射密码解密;3)测试加密和解密函数,验证其正确性。

(2)单表代替密码原理:单表代替密码是一种将明文字符映射到密文字符的替换密码。

操作步骤:1)编写加密函数subencrypt,实现单表代替密码加密;2)编写解密函数subdecrypt,实现单表代替密码解密;3)测试加密和解密函数,验证其正确性。

(3)维吉尼亚密码原理:维吉尼亚密码是一种多字母替换密码,加密公式为:C = (P + K[i]) mod 26,其中C为密文字母,P为明文字母,K为密钥,i为索引。

操作步骤:1)编写加密函数vigenereencrypt,实现维吉尼亚密码加密;2)编写解密函数vigeneredecrypt,实现维吉尼亚密码解密;3)测试加密和解密函数,验证其正确性。

2. 对称密码实验(1)DES加密算法原理:DES(Data Encryption Standard)是一种分组加密算法,采用56位密钥,64位分组。

操作步骤:1)编写DES加密函数desencrypt,实现DES加密;2)编写DES解密函数desdecrypt,实现DES解密;3)测试加密和解密函数,验证其正确性。

密码学相关实验报告

密码学相关实验报告

一、实验目的1. 理解并掌握常见的加密算法和密码体制的基本原理。

2. 学会使用密码学工具进行加密和解密操作。

3. 增强网络安全意识,提高对密码学在实际应用中的认识。

二、实验内容1. 仿射密码2. 单表代替密码3. 维吉尼亚密码4. AES加密算法三、实验原理1. 仿射密码:加密原理为将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。

解密原理与加密原理相反。

2. 单表代替密码:加密原理为利用代替表,将明文中的每个字符映射到密文。

解密原理为对代替表进行反向查找,由密文映射回明文。

3. 维吉尼亚密码:加密原理为通过加密方程Ci (pi k(i mod m)) mod 26,由明文得到密文。

解密原理为解密过程是加密过程的逆过程,通过解密方程pi (Cik(i mod m)) mod 26。

4. AES加密算法:是一种分组加密算法,将128位明文分为128位的数据块,使用密钥进行加密,得到128位的密文。

解密过程与加密过程相反。

四、实验步骤1. 仿射密码(1)选择明文:选择一段英文或数字,例如:"Hello World!"(2)选择密钥:选择一个密钥a和模数m,例如:a=5,m=26。

(3)加密:将明文进行0~25字母编码,按照加密公式计算出密文对应位置的字母编码,最后从密文的字母编码还原出密文对应位置的字母。

(4)解密:将密文进行0~25字母编码,按照解密公式计算出明文对应位置的字母编码,最后从明文的字母编码还原出明文对应位置的字母。

2. 单表代替密码(1)构造代替表:选择一个代替表,将明文中的每个字符映射到密文。

(2)加密:将明文中的每个字符按照代替表进行映射,得到密文。

(3)解密:将密文中的每个字符按照代替表的逆映射,得到明文。

3. 维吉尼亚密码(1)选择密钥:选择一个密钥,例如:"KEY"(2)加密:将明文和密钥进行异或操作,得到密文。

大学密码算法实验报告

大学密码算法实验报告

一、实验目的1. 理解密码学的基本概念和原理;2. 掌握常用密码算法的原理和实现方法;3. 通过实验加深对密码算法的理解和应用。

二、实验内容本次实验主要涉及以下密码算法:1. 移位密码;2. 维吉尼亚密码;3. 仿射密码;4. 单表代替密码;5. 周期置换密码。

三、实验原理1. 移位密码:将明文中的每个字母按照密钥所指定的位数进行左右移位,得到密文。

解密时,将密文中的每个字母按照密钥所指定的位数进行相反方向的移位,恢复明文。

2. 维吉尼亚密码:将明文中的每个字母按照密钥所指定的字母序列进行移位,得到密文。

解密时,将密文中的每个字母按照密钥所指定的字母序列进行相反方向的移位,恢复明文。

3. 仿射密码:将明文中的每个字母通过一个线性方程进行加密,得到密文。

解密时,将密文中的每个字母通过逆线性方程进行解密,恢复明文。

4. 单表代替密码:将明文中的每个字母按照一个固定的代替表进行替换,得到密文。

解密时,根据代替表进行反向查找,恢复明文。

5. 周期置换密码:将明文中的每个字母按照一个固定的周期进行置换,得到密文。

解密时,根据周期进行反向置换,恢复明文。

四、实验步骤1. 实验一:移位密码(1)选择密钥,如密钥为3,表示每个字母左移3位;(2)编写加密函数,将明文中的每个字母按照密钥进行移位,得到密文;(3)编写解密函数,将密文中的每个字母按照密钥进行相反方向的移位,恢复明文;(4)进行加密和解密操作,验证算法的正确性。

2. 实验二:维吉尼亚密码(1)选择密钥,如密钥为“KEY”,表示每个字母按照密钥中的字母序列进行移位;(2)编写加密函数,将明文中的每个字母按照密钥进行移位,得到密文;(3)编写解密函数,将密文中的每个字母按照密钥进行相反方向的移位,恢复明文;(4)进行加密和解密操作,验证算法的正确性。

3. 实验三:仿射密码(1)选择密钥,如密钥为(a, b),表示加密方程为(Ci = (ai pi + b) mod 26);(2)编写加密函数,将明文中的每个字母按照加密方程进行加密,得到密文;(3)编写解密函数,将密文中的每个字母按照逆加密方程进行解密,恢复明文;(4)进行加密和解密操作,验证算法的正确性。

密码学的实验报告

密码学的实验报告

一、实验目的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. 理解密码学的基本概念和原理;2. 掌握对称加密算法和非对称加密算法的基本原理;3. 实现DES、AES、RSA等常用密码算法;4. 分析和比较不同密码算法的性能;5. 设计简单的密码系统。

三、实验步骤1. 理解密码学的基本概念和原理密码学是研究保护信息安全的一门学科,主要包括加密、解密、认证和密钥管理等。

密码学的基本原理包括:保密性、完整性、可用性和抗抵赖性。

2. 掌握对称加密算法和非对称加密算法的基本原理(1)对称加密算法:加密和解密使用相同的密钥,如DES、AES等。

其优点是加密速度快,但密钥分发和管理困难。

(2)非对称加密算法:加密和解密使用不同的密钥,如RSA、ECC等。

其优点是密钥分发和管理简单,但加密速度较慢。

3. 实现DES、AES、RSA等常用密码算法(1)DES算法:本实验使用Python语言实现DES算法的加解密过程。

首先,构造DES密钥,然后对明文进行加密和解密。

(2)AES算法:本实验使用Python语言实现AES算法的加解密过程。

首先,构造AES密钥,然后对明文进行加密和解密。

(3)RSA算法:本实验使用Python语言实现RSA算法的加解密过程。

首先,生成公钥和私钥,然后使用公钥加密明文,使用私钥解密密文。

4. 分析和比较不同密码算法的性能通过对DES、AES、RSA等密码算法的实验,分析不同算法在加密速度、安全性、密钥长度等方面的差异,为实际应用提供参考。

5. 设计简单的密码系统结合所学知识,设计一个简单的密码系统,包括密钥生成、加密、解密和认证等功能。

四、实验结果与分析1. DES算法(1)加密速度:DES算法的加密速度较快,适合对速度要求较高的场合。

(2)安全性:DES算法的密钥长度为56位,相对较短,安全性较低。

2. AES算法(1)加密速度:AES算法的加密速度较快,适合对速度要求较高的场合。

密码学实验报告

密码学实验报告

一、实验目的1. 理解密码学的基本概念和原理。

2. 掌握常见的加密算法和解密算法。

3. 熟悉密码学的实际应用。

4. 培养实际操作能力和问题解决能力。

二、实验内容1. 古典密码学(1)单表替换密码实验内容:使用单表替换密码对一段明文进行加密和解密。

实验步骤:1)创建一个字符替换表;2)将明文中的每个字符替换为替换表中的对应字符;3)将替换后的字符拼接成密文;4)使用相同的替换表将密文解密,还原为明文。

(2)维吉尼亚密码实验内容:使用维吉尼亚密码对一段明文进行加密和解密。

实验步骤:1)确定密钥;2)按照密钥的长度将明文分成多个部分;3)对每个部分使用单表替换密码进行加密;4)将加密后的部分拼接成密文;5)使用相同的密钥和解密步骤将密文解密,还原为明文。

2. 现代密码学(1)DES加密算法实验内容:使用DES加密算法对一段明文进行加密和解密。

实验步骤:1)生成DES密钥;2)将明文分割成64位的数据块;3)对每个数据块进行加密,得到密文;4)使用相同的密钥和解密步骤将密文解密,还原为明文。

(2)AES加密算法实验内容:使用AES加密算法对一段明文进行加密和解密。

实验步骤:1)生成AES密钥;2)将明文分割成128位的数据块;3)对每个数据块进行加密,得到密文;4)使用相同的密钥和解密步骤将密文解密,还原为明文。

三、实验结果与分析1. 古典密码学实验结果单表替换密码和维吉尼亚密码的加密和解密效果良好,能够成功将明文加密为密文,再解密为明文。

2. 现代密码学实验结果DES和AES加密算法的加密和解密效果良好,能够成功将明文加密为密文,再解密为明文。

四、实验总结1. 通过本次实验,掌握了密码学的基本概念和原理。

2. 熟悉了常见的加密算法和解密算法,包括古典密码学和现代密码学。

3. 提高了实际操作能力和问题解决能力。

五、实验拓展1. 研究不同加密算法的优缺点,了解其在实际应用中的适用场景。

2. 学习更多密码学相关知识,如量子密码学、区块链密码学等。

密码学实验报告

密码学实验报告

目录AES加密算法实现 (2)一.实验目的 (2)二.实验原理 (2)三.实验步骤 (2)四.实验结果 (6)五.实验心得 (7)六.源代码: (8)RSA加解密算法实现 (17)一.实验目的: (17)二.实验要求: (17)三.RSA函数主要代码 (17)四.运算结果显示: (20)五.实验心得 (20)AES加密算法实现一.实验目的1.深入理解AES加密/解密算法理论的基础上,设计一个AES加密/解密软件系统;2.完成一个明文分组的加解密,明文和密钥是十六进制,长度都为128比特(32个16进制数),输入明文和密钥,输出密文,进行加密后,能够进行正确的解密;二.实验原理AES的区块长度固定为128 比特,密钥长度则可以是128,192或256比特;大多数AES计算是在一个特别的有限域完成的。

AES加密过程是在一个4×4的字节矩阵上运作,这个矩阵又称为“状态矩阵”,其初值就是一个明文区块(矩阵中一个元素大小就是明文区块中的一个Byte)。

加密时,各轮AES加密循环(除最后一轮外)均包含4个步骤:1.SubBytes —通过一个非线性的替换函数,用查找表的方式把每个字节替换成对应的字节。

2.ShiftRows —将矩阵中的每个行进行循环式移位。

3.MixColumns —列混淆。

这个步骤使用线性转换来混合每列的四个字节。

4.AddRoundKey —矩阵中的每一个字节都与该次回合轮密钥(round key)做XOR运算;每个子密钥由密钥生成方案产生。

三.实验步骤(一)加密1.密钥生成void keyexpansion(unsigned char S_BOX[][16],unsigned char keys[][44]){unsigned char Rcon[11] = {0,1,2,4,8,16,32,64,128,27,54};unsigned char past[4];register int i,j;//打开密钥文件if((fp=fopen("Key.txt","r"))==NULL){printf("CAN NOT OPEN THE FILE!\n");return ;}printf("\n请输入密钥!\n");for(i = 0;i <= 3;i ++)for(j = 0;j <= 3;j ++){fscanf(fp,"%02x",&keys[j][i]);printf("%02x ",keys[j][i]);}for(i = 4;i <= 43;i ++){ //make the other 40 keys if(i % 4 == 0){ //如果能被4整除,特殊处理for(j = 1;j <= 4;j ++) //把前一个密钥移位赋值给数组past[j - 1] = keys[j % 4][i -1];for(j = 0;j <= 3;j ++){if(j == 0)keys[j][i] = S_BOX[past[j] / 16][past[j] % 16] ^ Rcon[i / 4] ^ keys[j][i - 4];elsekeys[j][i] = S_BOX[past[j] / 16][past[j] % 16] ^ keys[j][i - 4];}}else{for(j = 0;j <= 3;j ++){keys[j][i] = keys[j][i - 4] ^ keys[j][i - 1];}}}}2.字节变换void bytesub(unsigned char S_BOX[][16],unsigned char B[][4]){register int i,j;for(i = 0;i <= 3;i ++)for(j = 0;j <= 3;j ++)B[i][j] = S_BOX[B[i][j] / 16][B[i][j] % 16];}3. 行移位void shiftrow(unsigned char B[][4]){int i,temp;temp = B[1][0];for(i = 0;i <= 2;i ++)B[1][i] = B[1][i + 1];B[1][3] = temp;for(i = 0;i <= 1;i ++){temp = B[2][i];B[2][i] = B[2][i + 2];B[2][i + 2] = temp;}temp = B[3][3];for(i = 3;i >=1;i --)B[3][i] = B[3][i - 1];B[3][0] = temp;}4. 列混合运算unsigned char xtime (unsigned char input){ // x乘法('02'乘法)int temp;temp = input<<1;if(input & 0x80){temp ^= 0x1b;}return temp;}void mixcolumn(unsigned char input[][4]){ //列混合int i, j;unsigned char output[4][4];for(j = 0;j <= 3;j++)for(i = 0;i <= 3;i++)output[i][j] = xtime(input[i%4][j]) //0x02乘法^ ( input[ ( i + 1 ) % 4][j] ^ xtime( input[ ( i + 1 ) % 4][j] ) ) //0x03乘法^ input[ ( i + 2 ) % 4][j] //0x01乘法^ input[ ( i + 3 ) % 4][j]; //0x01乘法for(i = 0;i <= 3;i ++)for(j = 0;j <= 3;j ++)input[i][j] = output[i][j];}(二)解密运算1.逆行移位void invshiftrow(unsigned char B[][4]){int i,temp;temp = B[1][3];for(i = 3;i >= 1;i --)B[1][i] = B[1][i - 1];B[1][0] = temp;for(i = 0;i <= 1;i ++){temp = B[2][i];B[2][i] = B[2][i + 2];B[2][i + 2] = temp;}temp = B[3][0];for(i = 0;i <= 2;i ++)B[3][i] = B[3][i + 1];B[3][3] = temp;}2.逆列混合运算void invmixcolum(unsigned char input[][4]){int i, j;unsigned char output[4][4];for(j=0; j< 4; j++)for(i=0; i<4; i++)output[i][j] = (xtime(xtime(xtime(input[i % 4][j]))) ^ xtime(xtime(input[i % 4][j]))^xtime(input[i % 4][j])) //0x0E乘法^ (xtime(xtime(xtime(input[ ( i + 1 ) % 4][j]))) ^ xtime(input[ ( i + 1 ) % 4][j]) ^ input[ ( i + 1 ) % 4][j]) //0x0B乘法^ (xtime(xtime(xtime(input[ ( i + 2 ) % 4][j]))) ^ xtime(xtime(input[ ( i + 2 ) % 4][j])) ^ input[ ( i + 2 ) % 4][j]) //0x0D 乘法^ (xtime(xtime(xtime(input[ ( i + 3 ) % 4][j]))) ^ input[ ( i + 3 ) % 4][j]); //0x09乘法for(i = 0;i <= 3;i ++)for(j = 0;j <= 3;j ++)input[i][j] = output[i][j];}3.逆字节变换void invbytesub(unsigned char N_S_BOX[][16],unsigned char B[][4]){register int i,j;for(i = 0;i <= 3;i ++)for(j = 0;j <= 3;j ++)B[i][j] = N_S_BOX[B[i][j] / 16][B[i][j] % 16];}四.实验结果我将明文设为13 43 67 69 88 d5 f6 8d 64 23 90 a2 e0 f5 b4 34,密钥设为23 43 45 78 28 af cd ab f7 d4 88 09 c3 4f 3c 57,运行结果如下:五.实验心得本程序是处理的AES分组大小和密钥长度都为128位,迭代轮数为10轮。

实验报告_密码学(二)2024

实验报告_密码学(二)2024

实验报告_密码学(二)引言概述:密码学是一门研究如何保护信息安全的学科,它的应用广泛涵盖了数据加密、数据完整性校验和身份认证等方面。

本实验报告旨在深入探讨密码学的相关知识,包括对称密码学、非对称密码学、哈希函数和数字签名的原理与应用等内容。

正文:1. 对称密码学- 原理:对称密码学采用相同的密钥对数据进行加密和解密,常用的算法有DES、AES等。

- 分组加密:将数据按固定长度进行分组加密,提高数据的安全性。

- 工作模式:常用的工作模式有电子密码本模式、密码分组链接模式等,用于提供更高的安全性和数据完整性。

- 密钥管理:讨论密钥的生成、分发和保护,包括密钥的更新和撤销等问题。

2. 非对称密码学- 原理:非对称密码学采用不同的密钥对数据进行加密和解密,常用的算法有RSA、DSA等。

- 公钥密码算法:介绍公钥密码算法的加密流程和解密过程,讨论公钥和私钥的生成和管理。

- 数字证书:介绍数字证书的概念和作用,讨论数字证书的颁发和验证过程。

- 密钥交换:讨论密钥交换协议,如Diffie-Hellman密钥交换协议,用于实现安全的密钥交换。

3. 哈希函数- 原理:哈希函数将任意长度的数据转换为固定长度的哈希值,常用的算法有MD5、SHA-1等。

- 安全性分析:讨论哈希函数的安全性,包括抗碰撞性、抗第二原像性和抗预像性等。

- 应用场景:介绍哈希函数在数字签名、消息认证码和数据完整性校验等方面的应用。

4. 数字签名- 原理:数字签名是利用非对称密码学中的私钥对消息进行加密,用于验证消息的真实性和完整性。

- 数字签名算法:介绍常用的数字签名算法,如RSA数字签名算法、DSA数字签名算法等。

- 数字证书:讨论数字证书在数字签名中的作用,以及数字证书颁发和验证的过程。

- 权威性和不可否认性:讨论数字签名的权威性和不可否认性,保证消息的信任和可靠性。

5. 密码学应用- 加密通信:介绍密码学在网络通信中的应用,如SSL/TLS协议和VPN等。

AES——密码学实验报告

AES——密码学实验报告

实验报告【实验名称】AES加密解密实验姓名:学号:班级:日期:10月20日【实验目的】1.掌握AES算法的基本原理2.了解AES算法的详细步骤【实验环境】1.本试验需要密码教学实验系统的支持2.操作系统为Windows 2000或者Windows XP【实验内容】1.掌握AES算法的原理及过程2.完成AES密钥扩展运算3.完成AES数据加密运算【实验步骤】1.打开“AES理论学习”,掌握DES算法的加解密原理;2.打开“AES算法流程",开始DES单步加密实验,如图10—1;3.选择密钥输入为ASCII码或十六进制码模式,输入密钥;若为ASCII码模式,则输入8个字符的ASCII码;若为十六进制码模式,则输入16个字符的十六进制码(0~9,a~f,A~F);4.点击“字节矩阵”按钮,将输入的密钥转化为密钥字节矩阵,从左至右每一列依次为W0,W1,W2,W3;5.依次点击“RotWord”、“SubWord”、“轮常量异或”,对W3依次进行“循环移位”、“S盒”、“轮常量异或”操作并与W0异或得到W4,;6.点击“异或”按钮,使得W1与W4进行异或得到W57.点击“生成W6和W7”按钮,生成W6和W78.点击“生成所有轮密钥"按钮,生成1~10轮轮密钥9.进入第二部分—-加密,选择加密输入为ASCII码或十六进制码模式,输入明文;若为ASCII码模式,则输入8个字符的ASCII码;若为十六进制码模式,则输入16个字符的十六进制码(0~9,a~f,A~F);10.点击“字节矩阵"按钮,将输入明文转化为明文字节矩阵;11.点击“AddRoundKey”按钮,使明文字节矩阵与密文字节矩阵进行逐比特异或;12.接下来进行第一轮操作,依次点击“SubBytes”、“ShiftRows"、“MixColumns”、“AddRoundKeys"按钮,对经过轮密钥加操作的字节矩阵依次进行字节替换、行移位、列混合和逐字节异或操作,得到新的字节矩阵;13.对上一步得到的结果连续进行8轮上一步的四步操作得到新的字节矩阵;14.第十轮的时候依次进行字节替换、行移位、轮密钥加操作(不需要列混合)得到最终的密文字节矩阵。

密码学案例实验报告

密码学案例实验报告

一、实验背景随着信息技术的飞速发展,网络安全问题日益突出,加密技术作为保障信息安全的重要手段,在各个领域都得到了广泛应用。

本实验报告旨在通过实际操作,加深对密码学原理和算法的理解,提高加密和解密的能力。

二、实验目的1. 了解密码学的基本概念和分类;2. 掌握DES、AES等常用加密算法的原理和流程;3. 能够运用密码学工具进行加密和解密操作;4. 分析密码破解技术,提高安全意识。

三、实验内容1. 实验一:DES加密算法(1)实验原理DES(Data Encryption Standard)是一种经典的对称加密算法,它采用64位密钥和64位明文,经过16轮加密操作,生成64位密文。

(2)实验步骤① 编写程序实现DES加密算法的加解密功能;② 使用密钥对一段英文文本进行加密和解密;③ 分析加密和解密结果,验证算法的正确性。

2. 实验二:AES加密算法(1)实验原理AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,它支持128位、192位和256位密钥长度,具有速度快、安全性高等优点。

(2)实验步骤① 编写程序实现AES加密算法的加解密功能;② 使用不同长度的密钥对一段英文文本进行加密和解密;③ 分析加密和解密结果,验证算法的正确性。

3. 实验三:密码破解技术(1)实验原理密码破解技术是指通过尝试各种可能的密钥,来破解加密信息的技术。

常见的密码破解方法有穷举攻击、字典攻击、暴力破解等。

(2)实验步骤① 使用密码破解工具对加密文本进行破解;② 分析破解结果,了解不同破解方法的特点和适用场景;③ 提高安全意识,防范密码破解攻击。

四、实验结果与分析1. 实验一和实验二的结果表明,DES和AES加密算法能够正确地对文本进行加密和解密,验证了算法的正确性。

2. 通过实验三,我们了解到密码破解技术的种类和特点,提高了安全意识。

在实际应用中,应选择合适的加密算法和密钥长度,以提高安全性。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息安全实验报告学号:学生姓名:班级:实验三密码学实验一、古典密码算法实验一、实验目的通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。

二、编译环境运行 windows 或 linux 操作系统的 PC 机,具有 gcc(linux)、VC (windows)等 C语言编译环境。

三、实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。

它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。

下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。

1.替代密码替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。

例如:明文字母 a、b、c、d ,用 D、E、F、G做对应替换后形成密文。

替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。

下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环移位密码。

它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第 k个字母替代。

它的加密过程可以表示为下面的函数:E(m)=(m+k) mod n其中:m 为明文字母在字母表中的位置数;n 为字母表中的字母个数;k 为密钥;E(m)为密文字母在字母表中对应的位置数。

例如,对于明文字母 H,其在字母表中的位置数为 8,设 k=4,则按照上式计算出来的密文为 L:E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L2.置换密码置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。

置换密码有时又称为换位密码。

矩阵换位法是实现置换密码的一种常用方法。

它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。

例如,明文为 attack begins at five,密钥为 cipher,将明文按照每行 6 列的形式排在矩阵中,形成如下形式:a t t a c kb e g i n sa t f i v e根据密钥 cipher中各字母在字母表中出现的先后顺序,给定一个置换:1 2 3 4 5 6f =1 4 5 32 6根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2列,第 6 列的顺序排列,则有下面形式:a a c t t kb i n g e sa I v f t e从而得到密文:abatgftetcnvaiikse其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。

四、实验内容和步骤1、根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择一个密钥 k,编写替代密码算法的实现程序,实现加密和解密操作。

2、根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。

五、总结与思考记录程序调试过程中出现的问题,分析其原因并找出解决方法。

记录最终实现的程序执行结果。

思考采取什么样的手段来防范类似对网络的攻击。

六、实验结果替换密码的加密解密先是加密实现程序为:#include ""#include ""main(){int k,i=0;char a[100],b[100]={0};;printf("please input your ming wen:\n");gets(a);printf("please input mi shi \n");scanf("%d",&k);printf("\n");do{b[i]=(char)(a[i]+k);if(b[i]>122){b[i]=(char)(b[i]-26);}i++;}while(a[i]!='\0');puts(b);getch();}实验结果为:再是解密:实现程序为:#include ""#include ""main(){int k,i=0;char a[100],b[100];printf("please input mi wen: \n"); gets(a);printf("please input mi shi: \n"); scanf("%d",&k);printf("\n");do{b[i]=(char)(a[i]-k);if(b[i]<97){b[i]=(char)(b[i]+26);不知道三哪里的问题结果中的Y输不出来}i++;}while(a[i]!='\0');puts(b);getch();}结果为:置换密码先是加密实现程序#include<>#define TRUE 1#define FALSE 0#define N 1000#define M 50int Glength(char *a){char *pt;int nlen=0;pt=a;while((*pt)!='\0'){nlen++;pt++;}return nlen;}void encrypt(char *a,int n,int *b) {int i,j,k,t,x,y;char c[M][M],d[M][M];k=Glength(a);puts(a);t=k%n;if(t==0){x=k/n;}else{x=(k/n)+1;}printf("%d\n",x);for(i=0;i<x;i++){for(j=0;j<n;j++){if(((a[i*n+j])>96)&&(a[i*n+j]<123)) {c[i][j]=a[i*n+j];printf("%c",c[i][j]);}else{c[i][j]=' ';printf("%c",c[i][j]);}}}printf("\n hehe\n");for(j=0;j<n;j++){for(i=0;i<x;i++){y=b[j];printf("encrypt %d\t",y);d[i][y]=c[i][j];printf("--%c\t",d[i][y]);}}printf("\n");for(i=0;i<x;i++){for(j=0;j<n;j++){a[i*n+j]=d[i][j];}}a[x*n+j+1]='\0';puts(a);}void bubble_sort(char *a,int n,int *b){int i,j,nTemp,k,x;char change;char c[N];x=0;strcpy(c,a);for(i=n-1,change=TRUE;i>=1&&change;--i) {change=FALSE;for(j=0;j<i;++j){if(a[j]>a[j+1]){nTemp=a[j];a[j]=a[j+1];a[j+1]=nTemp;change=TRUE;}}}i=0;while((c[i])!='\0'){for(k=0;k<n;k++){if((c[i])==a[k]){b[x]=k;printf("%d\t",b[x]); }}i++;x++;}printf("\n");puts(a);}int main(){int k;char nArr[N],a[N];int b[N];clrscr();printf("Please input key:\n");gets(nArr);k=Glength(nArr);printf("Please input M word:\n"); gets(a);printf("The data items in ascending order:\n"); bubble_sort(&nArr,k,&b);puts(nArr);encrypt(&a,k,&b);puts(a);printf("\n");return 0;}加密结果为:二、公钥加密算法—RSA一、实验目的通过使用 RSA 算法对实验数据进行加密和解密,掌握公钥加密算法的基本原理,熟练掌握 RSA 算法各功能模块的工作原理和具体运算过程。

二、实验原理RSA 公钥加密算法是 1977 年由 Ron Rivest、Adi Shamirh 和 LenAdleman 在(美国麻省理工学院)开发的。

RSA 取名来自开发他们三者的名字。

RSA 是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被 ISO 推荐为公钥数据加密标准。

RSA 算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。

1. RSA 的密钥生成RSA 的算法涉及三个参数,n、e、d。

其中,n 是两个大质数 p、q 的积,n 的二进制表示时所占用的位数,就是所谓的密钥长度。

鉴于现代对于大整数分解的水平不断增强,一般 P、Q 的取值都要求在 1024位以上。

e 和 d 是一对相关的值,e 可以任意取,但要求 e 与(p-1)*(q-1)互质;再选择 d,要求:(e*d)mod((p-1)*(q-1))=1。

<n,e>、<n,d>就是密钥对。

一般将前者当作公钥,后者作为私钥使用。

2. RSA 加密/解密过程RSA 加解密和解密的算法完全相同,设 A 为明文,B 为密文,则:A=B^e mod n;B=A^d mod n;e 和 d 可以互换使用,即:A=B^d mod n;B=A^e mod n;三、实验环境运行 Windows 或 Linux 操作系统的 PC 机,具有 gcc(Linux)、VC(Windows)等 C 语言编译环境。

相关文档
最新文档