加密解密程序实验报告

合集下载

凯撒加密实验报告(3篇)

凯撒加密实验报告(3篇)

第1篇一、实验目的通过本次实验,掌握凯撒加密法的原理和步骤,了解其在密码学中的应用,并能够使用Python语言实现凯撒加密和解密功能。

二、实验原理凯撒加密法是一种最简单且最广为人知的替换加密技术。

其基本原理是将明文中的每个字母按照字母表的顺序向后(或向前)移动一个固定数目的位置,从而生成密文。

例如,当偏移量为3时,明文中的A将变成D,B变成E,以此类推。

凯撒加密法的密钥是偏移量,它决定了加密过程中字母的移动方向和距离。

密钥的取值范围是1到25,表示将字母表向后移动1到25个位置。

三、实验内容1. 凯撒加密使用Python语言实现凯撒加密功能,具体步骤如下:- 定义一个函数,接收明文和密钥作为参数。

- 将明文中的每个字母按照字母表的顺序向后移动密钥指定的位置。

- 对于超出字母表范围的字母,将其转换回字母表的首部。

- 返回加密后的密文。

2. 凯撒解密使用Python语言实现凯撒解密功能,具体步骤如下:- 定义一个函数,接收密文和密钥作为参数。

- 将密文中的每个字母按照字母表的顺序向前移动密钥指定的位置。

- 对于超出字母表范围的字母,将其转换回字母表的首部。

- 返回解密后的明文。

3. 实验演示使用实验代码演示凯撒加密和解密过程,包括以下示例:- 示例1:明文为“The quick brown fox jumps over the lazy dog”,密钥为3,加密后的密文为“Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj”。

- 示例2:密文为“Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj”,密钥为3,解密后的明文为“The quick brown fox jumps over the lazy dog”。

四、实验结果与分析1. 加密效果通过实验验证,凯撒加密法能够有效地将明文转换为密文,且解密过程也能够将密文恢复为明文。

AES加密解密实验报告

AES加密解密实验报告

AES加密解密实验报告实验目的:了解和学习AES加密算法的原理和实现过程,掌握AES加密解密的方法。

实验原理:AES(Advanced Encryption Standard)高级加密标准,是一种对称加密算法,使用相同的密钥进行加密和解密。

AES加密算法使用数学运算和逻辑操作混合的方式,通过多轮迭代和替代、逆替代、置换等步骤,对数据进行加密和解密操作。

实验材料和方法:材料:计算机、Python编程环境。

方法:通过Python编程环境调用AES库函数,进行AES加密解密实验。

实验步骤:1. 导入AES库函数:在Python编程环境中,导入AES的库函数。

```pythonfrom Crypto.Cipher import AESfrom Crypto.Random import get_random_bytes```2. 生成随机密钥:使用get_random_bytes(函数生成一个长度为16字节的随机密钥。

```pythonkey = get_random_bytes(16)```3. 实例化AES加密对象:使用AES.new(函数,传入随机密钥和加密模式“AES.MODE_ECB”创建AES加密对象。

```pythoncipher = AES.new(key, AES.MODE_ECB)```4. 加密数据:使用encrypt(函数,传入要加密的数据进行加密操作。

```pythonmessage = "This is a secret message.".encodeciphertext = cipher.encrypt(message)```5. 解密数据:使用decrypt(函数,传入密文进行解密操作。

```pythonplaintext = cipher.decrypt(ciphertext)```6. 打印加密和解密结果:使用print(函数,打印加密前后和解密后的数据。

现代密码算法实验报告(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)输出加密后的密文。

加密解密实验报告

加密解密实验报告

竭诚为您提供优质文档/双击可除加密解密实验报告篇一:Aes加密解密实验报告信息安全工程课程实验报告Aes加密解密的实现课程名称:信息安全工程学生姓名:学生学号:专业班级:任课教师:黄小菲3112041006系统工程2038班蔡忠闽20XX年11月22日目录1.背景................................................. ................................................... . (1)1.1Rijndael密码的设计标准:............................................... .................................11.2设计思想................................................. ................................................... .......12.系统设计................................................. ................................................... . (2)2.1系统主要目标................................................. ................................................... ..22.2功能模块与系统结构................................................. . (2)2.2.1字节替换subbyte............................................ ...........................................22.2.2行移位shiftRow........................................... ..............................................22.2.3列混合mixcolumn.......................................... ..........................................32.2.4轮密钥加AddRoundKey........................................ .....................................42.2.5逆字节替换................................................. ..............................................42.2. 6逆行移位InvshiftRow........................................ .. (4)2.2.7逆列混淆................................................. .. (4)3加密模式................................................. ................................................... (5)3.1电子密码本ecb模式................................................. ........................................53.2加密块链模式cbc模......................................64系统功能程序设计................................................. ................................................... . (8)4.1基本加密部分................................................. ................................................... ..84.1.1字节替换................................................. ...................................................84.1.2行移位................................................. ................................................... ...84.1.3列混合................................................. ................................................... (9)4.1.4轮密钥加.................................................94.1.5密钥扩展................................................. . (10)4.1.6逆字节替换................................................. ..............................................114.1 .7逆行移位................................................. .. (1)14.1.8逆列混合................................................. . (12)4.1.9加密................................................. ................................................... .....124.1.10解密................................................. ................................................... (13)5实验结果................................................. (14)5.1需要加密文件................................................. .. (1)45.2实验加密解密结果................................................. ...........................................156参考资料................................................. ................................................... . (16)1.背景Aes,密码学中的高级加密标准(Advancedencryptionstandard,Aes),又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。

DES加密解密实验报告

DES加密解密实验报告

DES加密解密实验报告实验报告题目:DES加密解密实验一、实验目的1.了解DES加密算法的工作原理。

2. 学习使用Python编程语言实现DES加密算法。

3.掌握DES加密算法的应用方法。

二、实验原理DES(Data Encryption Standard)是一种用于加密的对称密钥算法,其密钥长度为64位,分为加密过程和解密过程。

1.加密过程(1)初始置换IP:将64位明文分成左右两部分,分别为L0和R0,进行初始置换IP操作。

(2)子密钥生成:按照规则生成16个子密钥,每个子密钥长度为48位。

(3)迭代加密:通过16轮迭代加密运算,得到最终的密文。

每轮迭代加密包括扩展置换、异或运算、S盒替代、P置换和交换操作。

(4)逆初始置换:将最终的密文分成左右两部分,进行逆初始置换操作,得到最终加密结果。

2.解密过程解密过程与加密过程类似,但是子密钥的使用顺序与加密过程相反。

三、实验材料与方法材料:电脑、Python编程环境、DES加密解密算法代码。

方法:1. 在Python编程环境中导入DES加密解密算法库。

2.输入明文和密钥。

3.调用DES加密函数,得到密文。

4.调用DES解密函数,得到解密结果。

5.输出密文和解密结果。

四、实验步骤1.导入DES加密解密算法库:```pythonfrom Crypto.Cipher import DES```2.输入明文和密钥:```pythonplaintext = "Hello World"key = "ThisIsKey"```3.创建DES加密对象:```pythoncipher = DES.new(key.encode(, DES.MODE_ECB) ```。

加解密实验报告

加解密实验报告

一、实验模块1. 实验名称:加解密实验2. 实验目的:掌握基本的加密和解密方法,理解加密算法的工作原理,并能够使用C语言实现加解密功能。

3. 实验环境:Windows操作系统,C语言编译器(如Visual Studio)二、实验标题加解密实验:基于RSA算法和DES算法的加密与解密三、实验内容概述本次实验主要涉及两种加密算法:RSA算法和DES算法。

通过学习这两种算法的原理,使用C语言实现加解密功能,并验证加密和解密过程是否正确。

四、实验日期、实验操作者实验日期:2023年10月15日实验操作者:张三五、实验目的1. 理解RSA算法和DES算法的原理。

2. 使用C语言实现RSA算法和DES算法的加解密功能。

3. 验证加密和解密过程是否正确。

六、实验步骤1. RSA算法原理及实现(1)生成密钥对:使用C语言实现RSA算法的密钥生成过程,生成公钥和私钥。

(2)加密过程:使用公钥对明文进行加密,得到密文。

(3)解密过程:使用私钥对密文进行解密,得到明文。

2. DES算法原理及实现(1)密钥生成:生成DES算法的密钥,通常为56位。

(2)加密过程:使用DES算法对明文进行加密,得到密文。

(3)解密过程:使用DES算法对密文进行解密,得到明文。

3. 验证加密和解密过程(1)选择一段明文,分别使用RSA算法和DES算法进行加密,记录密文。

(2)使用相应的私钥或密钥对密文进行解密,得到明文。

(3)比较加密后的密文和解密后的明文,验证加密和解密过程是否正确。

七、实验环境1. 操作系统:Windows 102. 编译器:Visual Studio 20193. 编程语言:C语言八、实验过程1. RSA算法实验(1)生成密钥对```c#include <stdio.h>#include <stdlib.h>// RSA算法生成密钥对void generateKeys(int n, int e, int d, int p, int q) {// 初始化公钥和私钥p = 61;q = 53;n = p q;e = 17;// 计算私钥d = 2753;}int main() {int p, q, n, e, d;generateKeys(&p, &e, &d, &q, &n);printf("Public Key: (%d, %d)\n", n, e); printf("Private Key: (%d, %d)\n", n, d); return 0;}```(2)加密过程```c#include <stdio.h>#include <math.h>// RSA算法加密int encrypt(int m, int n, int e) {int c = pow(m, e) % n;return c;}int main() {int m, n, e, c;printf("Enter the message: ");scanf("%d", &m);printf("Public Key: (%d, %d)\n", n, e);c = encrypt(m, n, e);printf("Encrypted Message: %d\n", c);return 0;}```(3)解密过程```c// RSA算法解密int decrypt(int c, int n, int d) {int m = pow(c, d) % n;return m;}int main() {int c, n, d, m;printf("Enter the encrypted message: "); scanf("%d", &c);printf("Private Key: (%d, %d)\n", n, d); m = decrypt(c, n, d);printf("Decrypted Message: %d\n", m);return 0;}```2. DES算法实验(1)密钥生成```c#include <stdio.h>// DES算法密钥生成void generateDESKey(char key, char desKey) {// 将密钥转换为DES密钥for (int i = 0; i < 56; i++) {desKey[i] = key[i / 8] & (1 << (7 - (i % 8))); }}int main() {char key[8];char desKey[56];printf("Enter the DES key: ");scanf("%s", key);generateDESKey(key, desKey);printf("DES Key: ");for (int i = 0; i < 56; i++) {printf("%02x", desKey[i]);}printf("\n");return 0;}```(2)加密过程```c#include <stdio.h>// DES算法加密void encryptDES(char input, char key, char output) { // 使用DES算法对输入数据进行加密// 此处省略加密算法的具体实现}int main() {char input[64];char key[8];char output[64];printf("Enter the message: ");scanf("%s", input);printf("DES Key: ");scanf("%s", key);encryptDES(input, key, output);printf("Encrypted Message: %s\n", output);return 0;}```(3)解密过程```c#include <stdio.h>// DES算法解密void decryptDES(char input, char key, char output) { // 使用DES算法对输入数据进行解密// 此处省略解密算法的具体实现}int main() {char input[64];char key[8];char output[64];printf("Enter the encrypted message: ");scanf("%s", input);printf("DES Key: ");scanf("%s", key);decryptDES(input, key, output);printf("Decrypted Message: %s\n", output);return 0;}```3. 验证加密和解密过程(1)RSA算法验证```c#include <stdio.h>#include <math.h>// RSA算法加密int encrypt(int m, int n, int e) {int c = pow(m, e) % n;return c;}// RSA算法解密int decrypt(int c, int n, int d) {int m = pow(c, d) % n;return m;}int main() {int m, n, e, d, c, m2;printf("Enter the message: ");scanf("%d", &m);printf("Public Key: (%d, %d)\n", n, e);c = encrypt(m, n, e);printf("Encrypted Message: %d\n", c);printf("Enter the Private Key: (%d, %d)\n", n, d); m2 = decrypt(c, n, d);printf("Decrypted Message: %d\n", m2);if (m == m2) {printf("Encryption and Decryption are successful!\n"); } else {printf("Encryption and Decryption failed!\n");}return 0;}```(2)DES算法验证```c#include <stdio.h>// DES算法加密void encryptDES(char input, char key, char output) {// 使用DES算法对输入数据进行加密// 此处省略加密算法的具体实现}// DES算法解密void decryptDES(char input, char key, char output) {// 使用DES算法对输入数据进行解密// 此处省略解密算法的具体实现}int main() {char input[64];char key[8];char output[64];printf("Enter the message: ");scanf("%s", input);printf("DES Key: ");scanf("%s", key);encryptDES(input, key, output);printf("Encrypted Message: %s\n", output);decryptDES(output, key, input);printf("Decrypted Message: %s\n", input);if (strcmp(input, "Hello") == 0) {printf("Encryption and Decryption are successful!\n");} else {printf("Encryption and Decryption failed!\n");}return 0;}```九、实验结论通过本次实验,我们掌握了RSA算法和DES算法的原理,并使用C语言实现了加解密功能。

DES_加密解密算法C实现--实验报告des算法实验

DES_加密解密算法C实现--实验报告des算法实验

DES_加密解密算法C实现--实验报告des算法实验.....1实验一1、实验题目利用C/C++编程实现DES加密算法或MD5加密算法。

我选择的是用C++语言实现DES的加密算法。

2、实验目的通过编码实现DES算法或MD5算法,深入掌握算法的加密原理,理解其实际应用价值,同时要求用C/C++语言实现该算法,让我们从底层开始熟悉该算法的实现过程3、实验环境操作系统:WIN7旗舰版开发工具:VisualStudio2022旗舰版开发语言:C++4、实验原理DES加密流程2如上图所示为DES的加密流程,其中主要包含初始置换,压缩换位1,压缩换位2,扩展置换,S盒置换,异或运算、终结置换等过程。

初始置换是按照初始置换表将64位明文重新排列次序扩展置换是将原32为数据扩展为48位数据,它主要由三个目的:1、产生与子密钥相同的长度2、提供更长的结果,使其在加密过程中可以被压缩3、产生雪崩效应,使得输入的一位将影响两个替换S盒置换是DES算法中最核心的容,在DES中,只有S盒置换是非线性的,它比DES中其他任何一步都提供更好的平安性终结置换与初始置换相对应,它们都不影响DES的平安性,主要目的是为了更容易将明文与密文数据一字节大小放入DES的f算法中DES解密流程与加密流程根本相同,只不过在进行16轮迭代元算时,将子密钥生成的K的次序倒过来进行迭代运算5、实验过程记录在对DES算法有了清晰的认识后,编码过程中我将其分为几个关键局部分别进行编码,最后将整个过程按顺序执行,即可完成DES的加密,代码的主要几个函数如下://Byte转为BitByteToBit(ElemTypech,ElemTypebit[8])//Bit转为ByteBitToByte(ElemTypebit[8],ElemType&ch)//初始置换InitialE某(ElemTypeInorder[64],ElemTypeDisorder[64])//终结置换AntiE某(ElemTypeDisorder[64])//扩展置换E某pandE某(ElemTypeRightMsg[32],ElemTypeE某pandMsg[48])//16轮迭代加密MoveLeft(ElemTypeC[28],ElemTypeD[28],ElemTypeL0[32],ElemType R0[32])3//16轮迭代解密mMoveLeft(ElemTypeC[28],ElemTypeD[28],ElemTypeL0[32],ElemTyp eR0[32])//生成48位子密钥GetCD48(ElemTypeC[28],ElemTypeD[28],ElemTypeSecret[48])//48位明文与子密钥进行异或运算某OR(ElemTypeE某pandMsg[48],ElemTypeSecret[48],ElemTypeResult[48])//S盒四位输出getSOut(ElemTypeResult[48],ElemTypeSout[32])//直接置换DirE某change(ElemTypeSout[32],ElemTypeDirOut[32])//Li与Ri 进行抑或运算某ORLR(ElemTypeDirOut[32],ElemTypeLeft[32],ElemTypeResult[32])函数执行次序和调用关系关系如下:6.源代码//DES.cpp:定义控制台应用程序的入口点。

加密解码_实训报告

加密解码_实训报告

一、实训目的本次实训旨在通过实际操作,加深对加密和解码原理的理解,提高对加密算法的应用能力,并培养在实际工作中运用加密技术保护信息安全的能力。

通过实训,学生能够:1. 掌握常见的加密算法,如对称加密、非对称加密和哈希算法。

2. 理解加密和解码的过程,包括密钥管理、加密操作和验证过程。

3. 学会使用加密工具和库,如Python的cryptography库。

4. 能够根据实际需求选择合适的加密算法,并解决加密过程中遇到的问题。

二、实训环境1. 操作系统:Windows 102. 编程语言:Python3.83. 加密库:cryptography4. 实训工具:PyCharm三、实训原理1. 对称加密:使用相同的密钥进行加密和解密。

常见的对称加密算法有AES、DES 和3DES。

2. 非对称加密:使用一对密钥,公钥用于加密,私钥用于解密。

常见的非对称加密算法有RSA和ECC。

3. 哈希算法:将任意长度的数据映射为固定长度的哈希值,用于验证数据的完整性和一致性。

常见的哈希算法有SHA-256、MD5和SHA-1。

四、实训过程1. 对称加密实训:- 使用AES算法对一段文本进行加密和解密。

- 使用DES算法对一段文本进行加密和解密。

- 比较不同对称加密算法的效率和安全性。

2. 非对称加密实训:- 使用RSA算法生成密钥对,并使用公钥加密、私钥解密一段文本。

- 使用ECC算法生成密钥对,并使用公钥加密、私钥解密一段文本。

- 比较不同非对称加密算法的效率和安全性。

3. 哈希算法实训:- 使用SHA-256算法对一段文本进行哈希运算。

- 使用MD5算法对一段文本进行哈希运算。

- 比较不同哈希算法的效率和安全性。

4. 实际应用实训:- 使用加密工具和库对文件进行加密和解密。

- 使用加密算法保护通信过程中的数据传输安全。

- 分析加密过程中可能出现的安全问题,并提出解决方案。

五、实训结果1. 成功掌握了AES、DES、RSA、ECC和SHA-256等加密算法的原理和应用。

加解密程序设计实验报告

加解密程序设计实验报告

一、实验目的1. 理解加解密的基本原理和方法;2. 掌握常用加密算法的使用和实现;3. 能够设计并实现简单的加解密程序;4. 培养编程能力和算法设计能力。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.73. 开发工具:PyCharm三、实验内容1. 选择一种加密算法(如AES、DES、RSA等);2. 理解该算法的原理和步骤;3. 设计并实现加解密程序;4. 编写测试用例,验证程序的正确性。

四、实验步骤1. 选择加密算法:本次实验选择AES加密算法,因为它具有较高的安全性和效率。

2. 理解AES加密算法原理:AES(Advanced Encryption Standard)是一种对称加密算法,其密钥长度可以是128位、192位或256位。

本实验使用128位密钥。

AES加密过程分为四个轮次,每个轮次包括字节替换、行移位、列混淆和轮密钥加。

字节替换使用S-Box进行,行移位将每行左移一位,列混淆使用混合变换,轮密钥加是将轮密钥与状态进行异或运算。

3. 设计加解密程序:(1)导入所需库```pythonfrom Crypto.Cipher import AESfrom Crypto.Util.Padding import pad, unpadfrom Crypto.Random import get_random_bytes```(2)定义加解密函数```pythondef encrypt(data, key):cipher = AES.new(key, AES.MODE_CBC)ct_bytes = cipher.encrypt(pad(data.encode(), AES.block_size)) iv = cipher.ivreturn iv + ct_bytesdef decrypt(encrypted_data, key):iv = encrypted_data[:16]ct = encrypted_data[16:]cipher = AES.new(key, AES.MODE_CBC, iv)pt = unpad(cipher.decrypt(ct), AES.block_size)return pt.decode()```4. 编写测试用例:```pythonif __name__ == '__main__':key = get_random_bytes(16) # 生成随机密钥data = "Hello, this is a test message!"encrypted_data = encrypt(data, key)decrypted_data = decrypt(encrypted_data, key)print("Original data:", data)print("Encrypted data:", encrypted_data)print("Decrypted data:", decrypted_data)```五、实验结果与分析1. 实验结果:(1)生成随机密钥:5a9a7e1a3e2c4b5d(2)加密数据:b1b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5 b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1 b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7 b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3 b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9 b0b1b2b3b4b5b6b7b8b9b0b1b2b3b4b5b6b7b8b9b0b1b2。

实验吧_密码学实验报告(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)测试加密和解密函数,验证其正确性。

DES加密解密实验报告

DES加密解密实验报告
1. 存储置换表的取值
用一维数组存储初始置换表 IP、逆置换表 IP_1、密钥置换表 PC_1、压缩密钥置换表 PC_2、
循环左移表、扩展置换表 E 盒和 P 置换盒,用三维数组存放 8 个 4*16 的 S 盒。
实现位置:Des.h 的 private 成员 代码如下:
// 初始置换表IP int IP[64] = { 58, 50, 42, 34, 26, 18, 10, 2,
3)终结置换 IP-1:按照终结置换表进行终结置换,64 位输出就是密文。 其中,在每一轮的子加密过程中,48 位的明文数据要与 48 位的子密钥进行异或运算。 子密钥的产生过程如下:
<1>对输入的密钥经过 PC1 置换输出 56 位数据,划分为 2 部分,每部分 28 位,左半部 分记为 C,右半部分记为 D。
1. DES 加密 ......................................................................................2 2. DES 解密 ......................................................................................5 四、程序实现 ...................................................................................... 5 1. 存储置换表的取值......................................................................5 2. 生成子密钥 ................................................................................. 8 3. 实现 F 函数 .................................................................................9 4. DES 加密 ....................................................................................10 5. 测试代码 ................................................................................... 11 五、程序运行初值及结果 ................................................................. 14 六、实验体会 .................................................................................... 14

《MIS系统软件》实验报告_加密解密

《MIS系统软件》实验报告_加密解密
④转换加密方法
通过将明文每m个字符一组按顺序分为若干个字符串,再按照先列后行形成密文,并分析给出解密的方法。
或者通过给出一个密钥字符串,将明文按密钥字符串长度按顺序分为若干组字符串,再按照密钥字符串各个字符的顺序形成密文,并分析给出解密的方法。
3、主要仪器设备及耗材
实验室提供计算机和上网条件,C语言上机环境。
}
printf("\n加密后密文是:");
for(i=0;i<mingwen_length;i++)
printf("%c",danbiao_miwen[i]);
}
void danbiao_jiemi(char miwen[])//解密函数
{
int miwen_length= strlen(miwen),i,j;
加密过程:首先输入明文如whutmis,然后输入与明文字符数相等的密匙如iloveyu,第一个字符的密文可以求得c1=(w+i)mod26=4,,此时对应编号4的字母为E,则明文W对应的密文为E,依次类推,可以将所有明文加密得到密文esioqgm;
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
附录:(部分源代码)
主界面:
/*****************************************/
/****计算机操作系统加密解密算法实验*****/
/****姓名:王涛*****/
/****班级:信管0801班*****/
/****学号:0120803490117 *****/

加密解密实验报告

加密解密实验报告

加密解密实验报告加密解密实验报告一、引言随着信息技术的飞速发展,数据安全性成为了一个重要的问题。

为了保护敏感数据的安全,加密解密技术应运而生。

本实验旨在探究加密解密的原理与方法,并通过实验验证其可行性和有效性。

二、加密方法1. 对称加密对称加密是一种加密方法,使用相同的密钥进行加密和解密。

在实验中,我们选择了最常用的对称加密算法——AES(Advanced Encryption Standard)。

通过实验我们发现,AES算法能够在保证数据安全的同时,加解密速度较快。

2. 非对称加密非对称加密是一种使用不同密钥进行加密和解密的方法。

在实验中,我们选择了RSA算法进行实验。

RSA算法基于数论的难题,具有较高的安全性。

实验结果表明,RSA算法在加密过程中较为耗时,但加密后的数据安全性较高。

三、实验步骤1. 对称加密实验(1)选择明文:在实验中,我们选择了一段文字作为明文进行加密。

明文内容为:“加密解密实验报告”。

(2)选择密钥:在AES算法中,密钥长度可以选择128位、192位或256位。

我们选择了128位密钥进行实验。

(3)加密过程:将明文和密钥输入AES算法中,得到密文。

(4)解密过程:将密文和密钥输入AES算法中,得到明文。

2. 非对称加密实验(1)选择明文:同样选择了一段文字作为明文,内容为:“加密解密实验报告”。

(2)生成密钥对:使用RSA算法生成一对密钥,包括公钥和私钥。

(3)加密过程:将明文和公钥输入RSA算法中,得到密文。

(4)解密过程:将密文和私钥输入RSA算法中,得到明文。

四、实验结果1. 对称加密实验结果经过AES算法加密和解密后,我们成功地将明文“加密解密实验报告”转化为了密文,并且通过解密过程将密文还原为了明文。

实验结果表明,对称加密算法能够有效地保护数据的安全性。

2. 非对称加密实验结果通过RSA算法的加密和解密过程,我们同样将明文“加密解密实验报告”转化为了密文,并通过解密过程将密文还原为了明文。

密码破解实验报告

密码破解实验报告

密码破解实验报告密码破解实验报告引言:密码是我们日常生活中重要的安全保障措施之一。

然而,随着技术的发展和黑客攻击的不断进步,传统的密码保护方式也面临着越来越大的挑战。

为了了解密码的安全性以及密码破解的原理和方法,我们进行了一系列的密码破解实验。

实验一:暴力破解暴力破解是一种基于穷举法的密码破解方法,它通过尝试所有可能的密码组合来找到正确的密码。

我们选择了一个简单的四位数字密码进行实验。

通过编写一个简单的程序,我们能够在几秒钟内找到正确的密码。

这表明,对于简单的密码来说,暴力破解是一种非常有效的方法。

实验二:字典攻击字典攻击是一种基于已有密码列表的密码破解方法。

我们使用了一个常见的密码字典,其中包含了各种常见的密码组合。

通过将这个密码字典与目标密码进行对比,我们可以很快地找到正确的密码。

然而,如果目标密码不在字典中,字典攻击就会失败。

因此,字典攻击对于使用较为复杂的密码的人来说,安全性要高于暴力破解。

实验三:社会工程学攻击社会工程学攻击是一种通过欺骗和操纵人类心理来获取密码的方法。

我们通过模拟一些常见的社会工程学攻击场景,例如钓鱼邮件、电话诈骗等,来测试人们对于密码保护的警惕性。

实验结果显示,许多人在面对社会工程学攻击时容易受骗,泄露了自己的密码。

这表明,除了技术手段外,人们的安全意识和警惕性也至关重要。

实验四:加密算法破解加密算法是一种通过对数据进行转换和混淆来保护密码的方法。

我们选择了常见的对称加密算法和非对称加密算法进行破解实验。

通过编写程序,我们尝试了多种破解方法,包括穷举法、差分攻击、侧信道攻击等。

然而,由于加密算法的复杂性和强大的安全性,我们并未成功破解这些加密算法。

结论:通过一系列的密码破解实验,我们得出了以下结论:1. 对于简单密码来说,暴力破解和字典攻击是非常有效的破解方法。

因此,我们应该避免使用过于简单的密码,而是选择复杂的密码组合,包括字母、数字和特殊字符。

2. 社会工程学攻击是一种常见且危险的密码破解方法。

EFS加密、解密实验报告

EFS加密、解密实验报告

实验项目与实验报告( 3)
一、实验步骤:
1.(1)打开控制面板,先创建一个用户,然后在管理员用户里面新建一个文件并对其加密。

(2)切换用户,导出秘钥进行解密。

3.
二、实验内容:
1.(1)打开控制面板,管理账户,创建新的标准用户333.
(2)在电脑磁盘C盘创建一个‘新文件夹’,在文件夹里新建记事本,输入想要的数据。

3)点击新文件夹,右击对属性进行调整,如下图所示,点确定,应用,确定。

(4)在单机应用后,会跳出一个加密文件系统窗口,单机进入界面,如图:
(5)接着单击下一步,自己设置密码保护私钥安全。

(6)将秘钥导出到自己的D盘。

单机完成,此时完成加密。

(7)切换到333用户,在C盘找到‘新文件夹’,双击,出现如下图,说明加密成功,
(8)此时在电脑搜索程序中输入certmgr.msc,单机进入个人密钥的导入,结果如图:。

密码学实验-实验2 DES和AES

密码学实验-实验2 DES和AES

密码学原理与实践实验报告一、实验目的①了解AES加密解密算法原理②了解DES加密解密算法原理二、实验内容与设计思想1.DES加密流程2.对于每个64位长度的明文分组的加密过程:①初始置换:输入分组按照初始置换表重排次序,进行初始置换。

②16轮循环:DES对经过初始置换的64位明文进行16轮类似的子加密过程.③终结置换:按照终结置换表进行终结置换,64位输出就是密文。

3.子密钥产生过程4.AES加密流程对于任意长度的明文,AES首先对其进行分组,每组的长度为128位。

分组之后将分别对每个128位的明文分组进行加密。

对于每个128位长度的明文分组的加密过程如下:(1)将128位AES明文分组放入状态矩阵中。

(2)AddRoundKey变换:对状态矩阵进行AddRoundKey变换,与膨胀后的密钥进行异或操作(密钥膨胀将在实验原理七中详细讨论)。

(3)10轮循环:AES对状态矩阵进行了10轮类似的子加密过程。

前9轮子加密过程中,每一轮子加密过程包括4种不同的变换,而最后一轮只有3种变换,前9轮的子加密步骤如下:●SubBytes变换:SubBytes变换是一个对状态矩阵非线性的变换;●ShiftRows变换:ShiftRows变换对状态矩阵的行进行循环移位;●MixColumns变换:MixColumns变换对状态矩阵的列进行变换;●AddRoundKey变换:AddRoundKey变换对状态矩阵和膨胀后的密钥进行异或操作。

最后一轮的子加密步骤如下:●SubBytes变换:SubBytes变换是一个对状态矩阵非线性的变换;●ShiftRows变换:ShiftRows变换对状态矩阵的行进行循环移位;●AddRoundKey变换:AddRoundKey变换对状态矩阵和膨胀后的密钥进行异或操作;5.AES解密过程AES的加密和解密过程并不相同,首先密文按128位分组,分组方法和加密时的分组方法相同,然后进行轮变换。

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.第十轮的时候依次进行字节替换、行移位、轮密钥加操作(不需要列混合)得到最终的密文字节矩阵。

文件加密解密程序语言设计实验报告五

文件加密解密程序语言设计实验报告五
叽e**CQJJJg JJJ-O»+BB^9«+9B*+CCJg'JJJ+—BrfTB CQJg'JJJJJ
dBwCQJg'++lHBv*CQJg^ J
输出加密文件"「
*-1[7FHHCCUW$?aaCJg'JJJ4J+T**-9BH匮'^G+HCQJg'JJJJJJTh—T+QJg'JJJtJg'JJJi
} fclose(i n); fclose(out);
if((i n=fope n(argv[2],"rb"))==NULL)
{ printf("不能打开源文件\n"); return;
}
printf("\n输出加密文件\n"); c=fgetc(i n);
while(!feof(i n))
{ putchar(c);
2、学习并掌握C语言中文件的打开和关闭,文件内部读写位置指针以及文件尾的检 测方法
3、掌握文件中的字符串读写操作,文件中的格式化读写操作
二、实验项目内容(实验题目)
文件加密解密。将文件filel中的每一字符与0x6a异或变成另一个字符送屏幕显示, 同时存入文件file2中。打开加密的file2输出解密内容。
文件处理基础
实验题目
文件处理基础
实验时间
2013.6.4
实验地点
DS1404
实验成绩
实验性质
□验证性□设计性\综合性
教师评价:
□算法/实验过程正确;□源程序/实验内容提交□程序结构/实验步骤合理;
□实验结果正确;□语法、语义正确;□报告规范;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

程序设计实践加密解密程序实验报告课题概述1.1课题目标和主要内容:利用MFC类或者win32编写windows程序,实现加密解密的功能。

1.2系统的主要功能:1.实现用户界面友好的操作。

2.具有对称编码体制,可以实现:i.凯撒密码:能够自定义密钥,自由输入明文,进行加密、解密,在对话框中返回加密和解密后的内容。

ii.置换密码:能够自定义密钥,自由输入明文,经矩阵变换进行加密、解密,在对话框中返回加密和解密后的内容iii.对称加密DES:用MFC调用WIN32编写的程序,在用户友好界面操作的同时显示程序加密,解密结果。

3.具有非对称编码体制:i. RSA加密解密:随机产生p,q,经检验是否互质,若不互质接着产生两个随机数,直到二者互质为止。

自动生成p,q,N及加密解密的密钥,可以自由输入明文,返回加密、解密的内容。

ii. MD5消息摘要计算:用MFC调用WIN32编写的程序,在用户友好界面操作的同时显示程序的加密结果。

4.信息隐藏技术:用LSB在图片(bmp格式,任意位置的图片)中写入信息,读取信息并显示出来,可以擦除信息。

可以自定义密钥。

5. AES加密解密:用MFC调用WIN32编写的程序,在用户友好界面操作的同时显示程序加密,解密结果。

6. 以上的所有对文字加密解密的方法(除LSB以外其余所有方法),都可以用于文件加密,解密,并能够及时保存加密,解密的信息到一个TXT文档,可以存在用户想存放的地方。

7.更多:链接了一个可加密解密,功能更为齐全的网站,若是上述方法不能满足用户需求,可以在程序运行的窗口中点击相应按钮,在联网的条件下进行在线加密解密。

一、系统设计2.1系统总体框架:2.2主要的层次逻辑为:1.界面窗口:改善设计,修正效果图:2.将书上的C++语言改用MFC适应的进行编程,实现相应功能:凯撒加解密3.或者用系统函数调用WIN32编好的程序:4.进行文件操作,加密解密后保存文件。

6.调用函数实现网页链接:2.3设计思想:(1)新建一个基于单文档的MFC应用程序,工程名称为secret。

(2)编辑菜单栏,添加可以实现的功能。

并为实现功能建立并设计所需要的对话框,并建立相应的类。

也要为对话框中的编辑栏添加相应的成员变量,根据算法设计来定是value还是control类别,再为它们取好名字,选合适的变量类型,例如:在我的程序里,我把密钥和明文一般定义为control类别,CEDIT类型,密文有CEDIT也有CString类型。

这样可以方便实现把编辑栏中输入的信息传给程序,再通过相应的还是进行一番调整后返回信息。

对话框中也还会有些BUTTON,要为他们添加消息响应函数实现操作。

为了自己方便起见,可以把对话框,菜单栏中相应项的ID改为自己能辨别出来作用的。

(3)如有需要可以在Csecretview类中添加,显示对话框。

void CsecretView::Oncaser(){// TODO: 在此添加命令处理程序代码mycaesar my_dlg;my_dlg.DoModal();}直接在MFC程序中编写的操作,相关类如下。

2.4系统程序流程图及设计:设计功能,编辑菜单栏是否需要设计相关对话框?是否新建并设计一个对话框为该对话框添加一个类,编写相应的代码在CView类中为菜单栏编写相应的消息响应函数。

运行,调试直到能够实现设计的功能。

2.5模块划分图:2.8类的关系图:我们在编写加密解密程序时,主要使用了一下几个类:2.7存储结构及内存分配:存储结构:主要使用数组、指针,存储密钥,明文,密文并对它们进行操作。

在DES,MD5等算法中一开始就需要存储矩阵等大量信息,在加密解密是也会占据内存,MD5占用的内存较大。

2.8关键算法分析:1. 凯撒密码的实现:[1]算法功能:输入密钥与明文,用for循环实现位移。

从而加密,解密。

[2]算法基本思想:需要将书上的C++语言转化为MFC适应的语言,如cout,cin都通过添加成员变量由对话框上的操作来实现。

[3]算法时间复杂度为O(1);空间复杂度为O(1);(由数组长度限制了输入密等长度,故而不为O(n))[4]其关键代码如下:void mycaesar::Oncode(){// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);char s[100];CString c;SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 100, (LPARAM)s);c = s;for (int i = 0;i<=100; i++){if (s[i] >= 'a'&& s[i] <= 'z')s[i] = ((int)(s[i] - 'a') + key) % 26 + 'a';else if (s[i] >= 'A'&& s[i] <= 'Z')s[i] = ((int)(s[i] - 'A') + key) % 26 + 'A';}SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 100, (LPARAM)s);SendDlgItemMessage(IDC_EDIT3, EM_SETSEL, 0, -1);UpdateData(FALSE);}void mycaesar::Ondecode() //解密算法实现{// TODO: Add your control notification handler code hereUpdateData(TRUE);char ss[100];CString c;SendDlgItemMessage(IDC_EDIT3, WM_GETTEXT, 100, (LPARAM)ss);c = ss;for (int i = 0; i <= 100; i++){if (ss[i] >= 'a'&& ss[i] <= 'z')ss[i] = ((int)(ss[i] - 'a') - key) % 26 + 'a';else if (ss[i] >= 'A'&& ss[i] <= 'Z')ss[i] = ((int)(ss[i] - 'A') - key) % 26 + 'A';}SendDlgItemMessage(IDC_EDIT4, WM_SETTEXT, 100, (LPARAM)ss);SendDlgItemMessage(IDC_EDIT4, EM_SETSEL, 0, -1);UpdateData(FALSE);}void mycaesar::Oncaser(){// TODO: 在此添加命令处理程序代码mycaesar my_dlg;my_dlg.DoModal();}2.置换加密的实现:[1]算法功能:输入密钥与明文,用矩阵实现位移。

从而加密,解密。

[2]算法基本思想:用二维矩阵实现加密解密,化为一维数组后返回数据。

[3]算法时间复杂度为O(1);空间复杂度为O(1);(由数组长度限制了输入密等长度,故而不为O(n))[4]其关键代码如下:void juzheng::OnEncrypt(){UpdateData(true);char clear1[100] = { 0 };SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 100, (LPARAM)clear1);SendDlgItemMessage(IDC_EDIT9, WM_GETTEXT, 100, (LPARAM)key_s);SendDlgItemMessage(IDC_EDIT9, WM_GETTEXT, 100, (LPARAM)keyc);len = strlen(clear1);for (int i = 0; i< len; i++){for (int j = 0; j < len - i - 1; j++){if (key[i]>key[i + 1]){char ttt = key[i];key[i] = key[i + 1];key[i + 1] = key[ttt];}}for (int k = 0, i = 0, j = 0; k<100; k++){cleartext[i][j] = clear[k];row = i + 1;j++;if (j >= len){j = 0; i++;}}for (int i = 0; i < len; i++){for (int j = 0; j < len; j++){if (key[j] == key_s[j]){for (int k = 0; k < row; k++){ciphertext1[k][i] = cleartext[k][j];}}}char so[10000], r[100];int q = 0;int w = 0;int b = 0;for (int g = 0; g < 100; g++){for (int h = 0; h < 100; h++){so[b] = ciphertext1[g][h];b++;}so[g] = r[g];}SendDlgItemMessage(IDC_EDIT1, WM_SETTEXT, 100, (LPARAM)clear1);SendDlgItemMessage(IDC_EDIT1, EM_SETSEL, 0, -1);UpdateData(false);}void juzheng::OnDecode(){// TODO: 在此添加控件通知处理程序代码UpdateData(true);char pp[100];for (int i = 0; i < len; i++){for (int j = 0; j < len; j++){if (key[i] == key_s[j]){for (int k = 0; k < row; k++){ciphertext2[k][i] = ciphertext1[k][j];}}}}SendDlgItemMessage(IDC_EDIT2, WM_GETTEXT, 100, (LPARAM)pp);SendDlgItemMessage(IDC_EDIT3, WM_SETTEXT, 100, (LPARAM)pp);SendDlgItemMessage(IDC_EDIT3, EM_SETSEL, 0, -1);UpdateData(false);2.DES的MFC关键代码转化:[1]算法功能:输入密钥与明文,用矩阵变化加密,解密。

相关文档
最新文档