信息安全 实验一 古典密码算法C语言

合集下载

古典密码的实验报告

古典密码的实验报告

古典密码的实验报告古典密码的实验报告引言:密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。

在古代,人们用各种各样的密码来保护重要信息的安全性。

本实验旨在通过实际操作,探索古典密码的加密原理和破解方法,从而深入了解密码学的基本概念和应用。

一、凯撒密码凯撒密码,又称移位密码,是最简单的一种古典密码。

其原理是通过将明文中的每个字母按照一定的规则进行移位,得到密文。

在本实验中,我们选择了一个简单的凯撒密码进行破解。

首先,我们选择了一段明文:“HELLO WORLD”,并将其按照凯撒密码的规则进行移位,假设移位数为3,则得到密文:“KHOOR ZRUOG”。

接下来,我们尝试使用暴力破解的方法来还原明文。

通过尝试不同的移位数,我们发现当移位数为3时,得到的明文与原文完全一致。

这表明我们成功地破解了凯撒密码,并还原了原始的明文。

二、维吉尼亚密码维吉尼亚密码是一种基于多个凯撒密码组合而成的密码算法。

其原理是通过使用不同的移位数对明文进行加密,从而增加了密码的复杂度。

在本实验中,我们选择了一段明文:“CRYPTOGRAPHY”,并使用维吉尼亚密码进行加密。

我们选择了一个关键词“KEY”作为加密密钥。

首先,我们将关键词“KEY”重复至与明文长度相同,得到“KEYKEYKEYKEYK”。

然后,将明文中的每个字母与关键词中对应位置的字母进行凯撒密码的移位操作。

经过加密后,我们得到了密文:“LXFOPVEFRNHR”。

接下来,我们尝试使用破解方法来还原明文。

通过尝试不同的关键词和移位数的组合,我们发现当关键词为“KEY”且移位数为3时,得到的明文与原文完全一致。

这表明我们成功地破解了维吉尼亚密码,并还原了原始的明文。

三、栅栏密码栅栏密码是一种基于换位操作的密码算法。

其原理是通过将明文中的字母按照一定的规则进行重新排列,得到密文。

在本实验中,我们选择了一段明文:“HELLO WORLD”,并使用栅栏密码进行加密。

古典密码算法

古典密码算法

古典密码算法古典密码算法古典密码算法是指在计算机加密领域之前使用的一些传统密码算法,它们通常基于简单的数学原理和替换规则。

以下是几种常见的古典密码算法:凯撒密码(Caesar Cipher):凯撒密码是一种替换密码,通过将字母按照一个固定的偏移量进行替换来加密消息。

例如,偏移量为3时,字母A被替换为D,字母B被替换为E,以此类推。

解密过程则是将替换后的字母反向偏移。

凯撒密码很容易破解,因为只有26种可能的偏移量。

维吉尼亚密码(Vigenère Cipher):维吉尼亚密码是一种多表密码,它使用一个关键字来决定每个字母的偏移量。

关键字被重复使用,逐个与明文中的字母对应,生成密文。

解密过程则是通过将密文与关键字对应的字母相减得到明文。

维吉尼亚密码比凯撒密码更复杂,但仍然容易受到频率分析等攻击。

替代密码(Substitution Cipher):替代密码使用替换规则来加密和解密消息。

最简单的替代密码是单字母替换,即将明文中的每个字母替换为一个固定的密文字母。

这种方法容易受到频率分析攻击。

更复杂的替代密码如多表密码和多字母替换密码引入了更复杂的替换规则,增加了密码破解的难度。

仿射密码(Affine Cipher):仿射密码是一种线性替换密码,它使用一个加密函数将明文字母映射到密文字母。

加密函数是一个仿射变换,包括一个乘法和一个加法操作。

解密过程则是应用逆仿射变换。

仿射密码比凯撒密码和替代密码更难破解,但对于较大的密钥空间来说仍然存在弱点。

这些古典密码算法在现代密码学中已经被更安全和复杂的算法所取代,因为它们容易受到密码分析的攻击。

现代密码算法,如对称加密算法(如AES)和公钥加密算法(如RSA),提供了更高的安全性和复杂性,以抵御现代密码破解技术的威胁。

古典密码实验报告

古典密码实验报告

哈尔滨工程大学实验报告实验名称:古典密码算法班级:学号:姓名:实验时间:2014年4月成绩:指导教师:实验室名称:哈尔滨工程大学实验室与资产管理处制一、实验名称古典密码算法二、实验目的通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。

三、实验环境(实验所使用的器件、仪器设备名称及规格)运行Windows 或Linux 操作系统的PC 机,具有gcc(Linux)、VC(Windows)等C 语言编译环境。

四、实验任务及其要求(1)根据实验原理部分对移位密码的介绍,自己创建明文信息,并选择一个密钥,编写移位密码的实现程序,实现加密和解密操作。

(2)根据实验原理部分对维吉尼亚密码的介绍,自己创建明文信息,并选择一个密钥,编写维吉尼亚密码的实现程序,实现加密和解密操作。

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

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

五、实验设计(包括原理图、真值表、分析及简化过程、卡诺图、源代码等)1.移位密码移位密码(Shift Cipher)是一种典型的单表替代密码,也称为加法密码。

移位密码的加密方法就是将明文中的每个字母用其在字母表后面的第k 个字母替代,它的加密过程可以表示为: c = (m + k) mod n其中,m 为明文字母在字母表中的位置数;n 为字母表中的字母总数;k 为密钥;c 为密文字母在字母表中对应的位置数。

相应的,移位密码的解密过程可以表示为:m = (c - k) mod n移位密码的一个典型代表就是凯撒密码(Ceaser Cipher),它是k=3 时的移位密码。

使用英文字母表的撒密码的加(解)密可以表示为:m = (c + 3) mod 26 m = (c - 3) mod 26,例如,明文:attacks at nine am密钥:3加密:将明文分组对每一个密文字母,依英文字母表,用其右的第 3 个字母代替密文:dwwdfnv dw qlqh dp另外,使用凯撒密码加密后的密文“dwwdfnvdwilyhsp”,其明文为“attacks at five pm”。

AESECB加密算法C语言代码实现

AESECB加密算法C语言代码实现

AESECB加密算法C语言代码实现要实现AESECB加密算法的C语言代码,需要先了解AES算法的基本原理和步骤。

以下是一个使用C语言实现AESECB加密算法的示例代码:```c#include <stdio.h>#include <stdlib.h>#include <string.h>#include <openssl/aes.h>//定义密钥长度#define KEY_LENGTH 16//ECBAES加密函数void AESEncrypt_ECB(const unsigned char* plainText, int plainTextLength, unsigned char* cipherText,const unsigned char* key)//创建AES密钥结构体AES_KEY aesKey;//设置加密密码AES_set_encrypt_key(key, KEY_LENGTH * 8, &aesKey);//加密数据AES_ecb_encrypt(plainText, cipherText, &aesKey, AES_ENCRYPT);//ECBAES解密函数void AESDecrypt_ECB(const unsigned char* cipherText, int cipherTextLength, unsigned char* plainText,const unsigned char* key)//创建AES密钥结构体AES_KEY aesKey;//设置解密密码AES_set_decrypt_key(key, KEY_LENGTH * 8, &aesKey);//解密数据AES_ecb_encrypt(cipherText, plainText, &aesKey, AES_DECRYPT);int mai//指定原始明文和密钥unsigned char plainText[] = "Hello, World!";unsigned char key[] = "secretkey";//计算明文长度int plainTextLength = strlen(plainText);//计算加密后的数据长度int cipherTextLength = ((plainTextLength / KEY_LENGTH) + 1) * KEY_LENGTH;//分配加密后数据的内存unsigned char* cipherText = (unsignedchar*)malloc(cipherTextLength);//加密数据AESEncrypt_ECB(plainText, plainTextLength, cipherText, key);//打印加密后的结果printf("Cipher text: ");for (int i = 0; i < cipherTextLength; i++)printf("%02x ", cipherText[i]);}printf("\n");//分配解密后数据的内存unsigned char* decryptedText = (unsignedchar*)malloc(cipherTextLength);//解密数据AESDecrypt_ECB(cipherText, cipherTextLength, decryptedText, key);//打印解密后的结果printf("Decrypted text: %s\n", decryptedText);//释放已分配的内存free(cipherText);free(decryptedText);return 0;```上述代码使用了OpenSSL库提供的AES函数来实现ECB模式的AES加密和解密操作。

实验一古典密码算法

实验一古典密码算法

实验一古典密码加密算法【实验目的】一般的密码学实验要求学习者编写实现加密法或分析工具的程序,但这势必要占用学习者较多的时间去调试程序,减少真正学习密码学的时间。

分析加密程序CAP是一款密码加密与分析的软件,包含了古典密码学和现代密码学常用的密码算法和分析工具。

学习者可以利用CAP更好地学习加密和密码分析技术,而不必花费大量的时间调试程序。

b5E2RGbCAP【实验目的】1、理解代替密码学加密过程;2、掌握置换密码学加密过程;3、自行设计恺撒密码<Caesar Cipher )加密工具,并验证恺撒密码<Caesar Cipher )加密过程;p1EanqFDPw4、掌握经典加密分析软件CAP的使用并验证古典密码加密算法;【实验环境】1、基于Windows的PC机一台;设计设计恺撒密码<Caesar Cipher )加密工具时的软件环境根据学生自己选择的平台安装,本设计软件平台可以是C语言,Visual C++,Visual C#,Visual Basic均可,主要是实现恺撒密码<Caesar Cipher )算法即可。

DXDiTa9E3d2、CAP加密与分析软件【实验内容】1、以C#平台为例说明恺撒密码<Caesar Cipher )算法的实现。

程序主界面如图1所示:程序源码using System。

……(省略部分生成代码>namespace Encryption{publicpartialclassForm1 : Form{int key。

privatestring Encryption(int key,refstringInputString>RTCrpUDGiT{StringBuilder str = newStringBuilder(>。

char ch,chtemp。

int temp。

for(int i=0。

i<InputString.Length。

古典密码实验报告

古典密码实验报告

实验报告一、实验室名称:SimpleSPC信息安全云实验系统二、实验项目名称:古典密码——置换密码三、实验学时:1学时四、实验原理:1) 算法原理a) 置换密码算法就是不改变明文字符,而就是按照某一规则重新排列消息中的比特或字符顺序,才而实现明文信息的加密。

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

其解密过程就是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据密钥给出的矩阵置换产生新的矩阵,从而恢复明文。

b) 置换密码(Permutation Cipher),又称换位密码。

算法实施时,明文的字母保持相同,但顺序会被打乱。

置换只不过就是一个简单的换位,每个置换都可以用一个置换矩阵Ek来表示。

每个置换都有一个与之对应的逆置换Dk。

置换密码的特点就是仅有一个发送方与接受方知道的加密置换(用于加密)及对应的逆置换(用于解密)。

它就是对明文L长字母组中的字母位置进行重新排列,而每个字母本身并不改变。

c) 设n为一固定整数,P、C与K分别为明文空间、密文空间与密钥空间。

明/密文就是长度为n的字符序列,分别记为X(x1,x2,…,xn)属于P与Y(y1,y2,…,yn)属于C ,K就是定义在{1,2,…,n}的所有置换组成的集合。

对任何一个密钥(即一个置换),定义置换如下:加密置换为:解密置换为:上式中,就是的逆置换,密钥空间K的大小为n!2) 算法参数置换密码算法主要有c、m、k、n四个参数。

c为密文,m就是明文,k为密钥,n 为模数。

3) 算法流程算法流程。

如图所示五、实验目的:1)学习置换密码的原理2) 学习置换密码的算法实现六、实验内容:1、在虚拟机上运行置换密码、exe可执行文件,根据提示输入明文与密钥,同时检查输出的解密后的结果就是否与明文一致。

2、学习掌握置换密码的原理,并根据明文与密钥计算出对应的加密文,并与程序输出的结果进行比对,掌握其加密解密的过程。

实验报告2---古典密码playfair

实验报告2---古典密码playfair
2)首先需将密文中的字母不重复的输入至密钥数组中,且不改变字母在密钥中的顺序。
3)其次将其他字母按顺序进行输入,注意不能重复在密钥部分中存在的字母。
4)其中在前两部都需进行重复删除操作:
for(j=0;j<i;j++)
if(key[i]==key[j]) break;
5)将密钥钥数组转化为二维数组(利用循环嵌套),并进行输出。
{if(q1==4) q1=-1;
if(q2==4) q2=-1;
cipher[k]=key1[p1][q1+1];
cipher[k+1]=key1[p1][q2+1];}
ⅱ、同一分组在同一列,密文为所在行紧靠明文下方的字母,其中注意第一行看做是最后一行的下方:
if(q1==q2)
{if(p1==4) p1=-1;
要求:上述密码算法的实现程序提供加密接口encrypt( ),程序名为playfair.c




1、对playfair体制进行算法分析,需要构造密钥矩阵,且需对明文进行分组处理,然后按照法则进行加密。
2、构造密钥矩阵注意事项以及实现步骤:
1)密钥矩阵是一个5*5矩阵,其中字母“j”看做是“i”。且密钥矩阵是分为两部分:密钥部分,以及其他字母部分。为了方便起见,先将密钥矩阵按照一维数组进行处理,在矩阵元素完全确定后将一维数组转化为二维数组。
④若M1M2,则插入一个字母(如约定为Q)于重复字母之间,并用前述方法处理。
⑤若明文字母数为奇数时,则在明文的末端添加某个事先约定的字母作为填充。
实验环境
运行Windows操作系统的PC机,具有VC++ 6.0或Turbo C语言编译环境

古典密码算法-仿射密码

古典密码算法-仿射密码

古典密码算法-仿射密码仿射密码的加密过程包括两个步骤:置换和替换。

首先,置换步骤是将明文中的每个字母与一个数字对应。

这个对应关系可以通过一个简单的映射表来实现。

比如,可以将'A'映射为0,'B'映射为1,以此类推,直到'Z'映射为25、此外,还可以选择一个正整数作为密钥,用于进行后续的数学运算。

然后,替换步骤是通过一系列的线性运算对明文进行加密。

具体的加密算法如下所示:1. 加密公式:C = (a * P + b) mod 26其中,C表示密文,P表示明文(对应的数字),a和b是密钥中的两个参数,mod 26表示取模运算(结果范围在0到25之间)。

在这个加密公式中,a被称为乘法参数,b被称为加法参数。

通过调整a和b的值,可以改变加密的方式。

当a等于1时,相当于没有进行乘法操作;当b等于0时,相当于没有进行加法操作。

因此,可以根据具体的需求调整参数的值,以获得不同的加密效果。

例如,假设明文为HELLO,对应的数字为[7,4,11,11,14],选择密钥a=5,b=8,那么经过加密公式的计算,可以得到密文为RAPPH,对应的数字为[17,0,15,15,7]。

需要注意的是,在解密过程中,需要使用密钥的逆元来进行计算。

密钥的逆元可以通过数论中的扩展欧几里得算法或逆元算法来计算得到。

通过逆元,可以将密文重新转换为明文。

仿射密码具有以下特点:1.加密和解密过程都是线性变换,速度较快;2.密钥空间较大,具有较高的安全性;3.在明文很大的情况下,可以通过频率分析来破解;4.对于小范围攻击者,比如只能截获一小部分密文的人来说,被加密的信息难以破解。

虽然仿射密码在安全性上相对较弱,但它仍然是古典密码算法中一种简单而有效的加密方法。

在现代密码学中,仿射密码通常用作其他更强大的密码算法的基础,例如Hill密码和Vigenère密码。

总结起来,仿射密码是一种基于线性变换的古典密码算法,在加密和解密过程中使用数论中的原理。

描述古典加密算法

描述古典加密算法

描述古典加密算法
x
古典加密算法是由密码学家在过去几十年中发展出来的一种加密方式,用来将信息进行加密,以确保信息安全。

古典加密算法是基于数学定理和模式来编写的,它们被广泛应用于信息的安全传输。

古典加密算法要比其他加密方式更安全,因为它们把原本明文的信息转换成无法被解码的密文,即使有人监听到加密传输的信息,也无法解码。

古典加密算法的一般流程:首先,将明文按照一定的规则或算法进行加密,生成密文。

然后,通过加密算法将密文发送给接收者,接收者使用相同的加密算法和密钥将密文解密,还原为明文。

古典加密算法有许多,其中最常用的是“凯撒密码”和“替换密码”,凯撒密码是按照特定字母表,将明文中的每个字母偏移几位,生成密文;替换密码是按照特定表将明文中的每个字母替换成另外一个,生成密文。

古典加密算法有它的优缺点:优点是它的实施极为简单,缺点是易被破解,计算机可以通过穷举法轻松解开。

如今,古典加密算法的应用越来越少,代替它的是更先进的加密算法,如AES,RSA等。

古典密码的实验报告

古典密码的实验报告

古典密码的实验报告1. 引言古典密码是一种古老的加密技术,用于在信息传递过程中保护敏感信息的安全性。

它通过将明文转换成密文,从而使未经授权的个体无法理解信息的内容。

本实验旨在介绍几种常见的古典密码算法,并通过实验验证其加密和解密的过程。

2. 凯撒密码凯撒密码是最简单的古典密码之一,它通过将明文中的每个字母向前或向后移动固定的位置来加密信息。

例如,当移动的位置为3时,明文中的字母A将被替换为D,字母B将被替换为E,以此类推。

2.1 加密过程1.输入明文。

2.设置移动的位置。

3.对于明文中的每个字母,按照移动的位置将其替换为对应的字母。

4.得到密文。

2.2 解密过程1.输入密文。

2.设置移动的位置。

3.对于密文中的每个字母,按照移动的位置将其替换为对应的字母。

4.得到明文。

3. 维吉尼亚密码维吉尼亚密码是一种多表密码,它通过使用一系列凯撒密码表来加密信息。

每个表中的移动位置逐个递增,这样可以更好地混淆明文的结构。

3.1 加密过程1.输入明文。

2.输入密钥。

3.对于明文中的每个字母,找到对应的凯撒密码表。

4.根据对应的表和密钥,将明文中的字母替换为密文。

5.得到密文。

3.2 解密过程1.输入密文。

2.输入密钥。

3.对于密文中的每个字母,找到对应的凯撒密码表。

4.根据对应的表和密钥,将密文中的字母替换为明文。

5.得到明文。

4. 培根密码培根密码是古典密码中的另一种类型,它使用一系列相同长度的字母组成的密钥来加密信息。

明文中的每个字母都将被替换为对应密钥中的字母。

4.1 加密过程1.输入明文。

2.输入密钥。

3.对于明文中的每个字母,将其对应到密钥中的相应字母。

4.得到密文。

4.2 解密过程1.输入密文。

2.输入密钥。

3.对于密文中的每个字母,将其对应到密钥中的相应字母。

4.得到明文。

5. 实验结果与讨论在本实验中,我们使用了凯撒密码、维吉尼亚密码和培根密码进行加密和解密实验。

通过对不同算法的测试,我们发现:1.凯撒密码是最简单的古典密码之一,但由于移动位置的确定性,易受到频率分析等攻击方式的威胁。

实验一古典密码算法实验

实验一古典密码算法实验
二、实验设备环境及要求:
运行windows或linux操作系统的PC机,具有gcc(linux)、VC(windows)等C语言编译环境。
3、实验原理
古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。
M yrtg bd oiru jtwb fsl dw uwdu ej ssuaxipv.
Zmvp qlwk zmuptz!
Qruc
10.11.2003
五、实验指导与数据处理:
1.用凯撒密码加密:
解密:
2.使用维吉尼亚密码加密:
使用维吉尼亚密码解密:
对附录1中密文进行解密(密钥为decipher):
Dear doctor:
1.替代密码
替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文。例如:明文字母a、b、c、d,用D、E、F、G做对应替换后形成密文。
替代密码包括多种类型,如单表替代密码、多明码替代密码、多字母替代密码、多表替代密码等。下面我们介绍一种典型的替代密码。
(1)恺撒(caesar)密码,又叫循环移位密码。它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代。它的加密过程可以表示为下面的函数:
(2)维吉尼亚(Vigenere)密码Vigenere密码是由法国密码学家Blaisede Vigenere于1858年提出的,它是一种以移位代换为基础的周期代换密码。
称k=(k1,k2,…,km)为长为m的密钥字。密钥量为26m,所以对一个相当小的m值,穷举密钥法进行分析破解也需要很长的时间。若m=5,则密钥空间大小超过1.1*107,手工搜索也不容易。当明文串的长度大于m时,可将明文串按m一组分段,然后再逐段使用密钥字k。

古典密码算法实验原理

古典密码算法实验原理

一.Kaiser(恺撒)密码Kaiser密码是传统的代替加密法,当没有发生加密(即没有发生移位)之前,其置换表如1-1-1所示。

表1-1-1加密时每一个字母向前推移k位,例如k=5,置换表如1-1-2所示。

表1-1-2于是对明文:data security has evolved rapidly可以得到密文:IFYF XJHZWNYD MFX JATQAJI WFUNIQD若令26个字母分别对应整数 0 ~ 25,如表 1-1-3所示。

表1-1-3则Kaiser加密变换实际上是c = (m + k) mod 26其中m是明文对应的数据,c是与明文对应的密文数据,k是加密用的参数,也称为密钥。

很容易得到相应的Kaiser解密变换是:m = D(c) = (c – k) mod 26例如明文:data security 对应的数据序列:3 0 19 0 184 2 20 17 8 19 24k = 5 时得到密文序列:8 5 24 5 23 9 7 25 22 13 24 3对应的密文为:I F Y F X J H Z W N Y D二.单表置换密码单表置换密码也是一种传统的代替密码算法,在算法中维护着一个置换表,这个置换表记录了明文和密文的对照关系。

当没有发生加密(即没有发生置换)之前,其置换表如 1-1-4所示。

表1-1-4在单表置换算法中,密钥是由一组英文字符和空格组成的,称之为密钥词组,例如当输入密钥词组:I LOVE MY COUNTRY后,对应的置换表如表 1-1-5所示。

表1-1-5在表1-1-5中 ILOVEMYCUNTR 是密钥词组 LOVE MY COUNTRY 略去前面已出现过的字符O和Y依次写下的。

后面ABD……WXZ则是密钥词组中未出现的字母按照英文字母表顺序排列成的,密钥词组可作为密码的标志,记住这个密钥词组就能掌握字母加密置换的全过程。

这样对于明文:data security has evolved rapidly,按照表1-1-5的置换关系,就可以得到密文:VIKI JEOPHUKX CIJ EQDRQEV HIFUVRX。

古典密码的实验报告

古典密码的实验报告

一、实验目的1. 了解古典密码的基本原理和分类。

2. 掌握仿射密码、维吉尼亚密码和单表密码的加解密过程。

3. 熟悉古典密码的攻击方法,提高密码学素养。

二、实验内容1. 仿射密码(1)原理:仿射密码是一种单表代换密码,其加密和解密过程均采用一个密钥a 和b。

其中,a与26互素,b是任意整数。

加密公式为:C = (aP + b) mod 26,解密公式为:P = a^(-1)(C - b) mod 26。

(2)实现过程:① 随机生成满足条件的密钥a和b。

② 使用加密公式对明文进行加密。

③ 使用解密公式对密文进行解密。

2. 维吉尼亚密码(1)原理:维吉尼亚密码是一种多表替代密码,使用多个凯撒密码字母表对明文进行替代。

加密和解密过程都涉及到密钥,密钥的长度与明文长度相同。

(2)实现过程:① 选择一个密钥,生成对应的凯撒密码字母表。

② 按照密钥的顺序,依次对明文中的每个字母进行替代。

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

3. 单表密码(1)原理:单表密码是一种简单的代换密码,将明文中的每个字母映射到密文中的另一个字母。

(2)实现过程:① 创建一个代替表,将明文中的每个字母映射到密文中的另一个字母。

② 按照代替表对明文进行加密。

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

三、实验结果与分析1. 仿射密码实验结果通过实验,我们成功实现了仿射密码的加密和解密过程。

加密过程生成的密文在解密过程中能够正确还原成明文。

2. 维吉尼亚密码实验结果实验结果表明,维吉尼亚密码的加密和解密过程同样成功。

密钥的长度与明文长度相同,加密效果较好。

3. 单表密码实验结果单表密码的实验结果同样令人满意。

通过创建代替表,我们能够将明文正确映射到密文,解密过程也能成功还原明文。

四、实验结论1. 古典密码的基本原理和分类已经掌握。

2. 仿射密码、维吉尼亚密码和单表密码的加解密过程已经熟练掌握。

3. 古典密码的攻击方法有所了解,为以后学习现代密码学奠定了基础。

五、实验心得通过本次实验,我对古典密码有了更深入的了解。

c语言 密码算法

c语言 密码算法

C语言可以用来实现各种密码算法,包括对称密码算法、非对称密码算法和哈希算法等。

下面分别简单介绍如何使用C语言实现这些算法:1. 对称密码算法对称密码算法是指加密和解密使用同一个密钥的密码算法。

最常用的对称密码算法是DES(Data Encryption Standard)算法。

下面是使用C语言实现DES算法的简单示例代码:```c#include <stdio.h>#include <string.h>#include <openssl/des.h>int main() {// 设置密钥DES_cblock key = {0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef};// 加密数据char plaintext[] = "Hello, world!";DES_key_schedule schedule;DES_set_key(&key, &schedule);char ciphertext[strlen(plaintext)];DES_ecb_encrypt((unsigned char*)plaintext, (unsigned char*)ciphertext, &schedule, DES_ENCRYPT);// 输出加密结果printf("Ciphertext: ");for (int i = 0; i < strlen(ciphertext); i++) {printf("%02x", (unsigned char)ciphertext[i]);}printf("\n");// 解密数据char decryptedtext[strlen(ciphertext)];DES_set_key(&key, &schedule);DES_ecb_encrypt((unsigned char*)ciphertext, (unsigned char*)decryptedtext, &schedule, DES_DECRYPT);// 输出解密结果printf("Decrypted text: %s\n", decryptedtext);return 0;}```在这个示例中,我们使用了OpenSSL库中的DES函数来实现DES算法。

C语言加密与解密算法详解

C语言加密与解密算法详解

C语言加密与解密算法详解1. 引言在信息时代,数据的保密性至关重要。

加密与解密算法是一种重要的保护数据安全性的技术手段。

本文将详细介绍C语言中的加密与解密算法,包括常用的对称加密算法和非对称加密算法。

2. 对称加密算法2.1 Caesar密码Caesar密码是一种简单的替换密码算法,通过将每个字母向后移动固定的位数来加密消息。

解密操作是将每个字母向前移动相同的位数。

2.2 DES算法数据加密标准(DES)是一种对称加密算法,使用56位的密钥对64位的数据进行加密。

DES算法通过多轮迭代和复杂的置换与代换操作来实现高强度的加密。

3. 非对称加密算法3.1 RSA算法RSA算法是一种常用的非对称加密算法。

它通过使用两个密钥:一个公钥和一个私钥,来实现加密和解密操作。

发送方使用接收方的公钥进行加密,而接收方使用自己的私钥进行解密。

3.2 椭圆曲线加密算法椭圆曲线加密算法(ECC)是一种基于椭圆曲线数学原理的非对称加密算法。

它具有较小的密钥长度和高安全性的特点,适用于资源受限的设备。

4. 加密与解密实例4.1 使用Caesar密码加密与解密字符串下面是使用C语言实现Caesar密码算法的示例代码: ```// Caesar密码加密函数void caesarEncrypt(char* text, int key) {int i = 0;while (text[i] != '\0') {if (isalpha(text[i])) {if (islower(text[i])) {text[i] = (text[i] - 'a' + key) % 26 + 'a';} else {text[i] = (text[i] - 'A' + key) % 26 + 'A';}}i++;}}// Caesar密码解密函数void caesarDecrypt(char* text, int key) {caesarEncrypt(text, 26 - key);}```4.2 使用RSA算法加密与解密数据下面是使用C语言中的openssl库实现RSA算法的示例代码:```// RSA加密函数int rsaEncrypt(unsigned char* plainText, int plainTextLen, unsigned char* encryptedText) {// 使用公钥进行加密操作// ...}// RSA解密函数int rsaDecrypt(unsigned char* encryptedText, int encryptedTextLen, unsigned char* decryptedText) {// 使用私钥进行解密操作// ...}```5. 总结加密与解密算法在数据保密性方面发挥着重要的作用。

古典密码实验报告

古典密码实验报告

古典密码实验报告古典密码实验报告一、引言密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。

在古代,人们为了保护重要信息的安全,发明了各种各样的古典密码。

本实验旨在通过实际操作,了解并研究几种古典密码的原理和加密解密过程。

二、凯撒密码凯撒密码是最简单的一种古典密码,它的原理是通过将明文中的每个字母按照一定的偏移量进行替换,从而得到密文。

在实验中,我们选择了一个简短的明文“HELLO”,并将其加密成了密文“KHOOR”。

通过对比明文和密文,我们可以发现,凯撒密码的加密过程非常简单,只需要将明文中的每个字母按照一定的偏移量进行替换即可。

然而,凯撒密码的安全性非常低,因为偏移量很容易被破解。

三、维吉尼亚密码维吉尼亚密码是一种基于凯撒密码的改进密码,它引入了一个密钥序列,通过不同的偏移量来加密明文。

在实验中,我们选择了一个较长的明文“CRYPTOGRAPHY”,并使用密钥序列“KEY”进行加密。

维吉尼亚密码的加密过程相对复杂一些,需要根据密钥序列的长度,对明文中的每个字母选择不同的偏移量进行替换。

通过使用密钥序列“KEY”,我们将明文“CRYPTOGRAPHY”加密成了密文“DWUMQVQWUH”.维吉尼亚密码相较于凯撒密码,提高了加密的复杂度和安全性。

然而,它的密钥序列仍然可能被破解,因此在实际应用中需要更复杂的密码算法。

四、栅栏密码栅栏密码是一种将明文按照一定规则排列后再读取的密码算法。

在实验中,我们选择了一个较短的明文“HELLO WORLD”,并使用栅栏数为3进行加密。

栅栏密码的加密过程非常简单,只需要将明文按照栅栏数进行排列,然后按照从上到下、从左到右的顺序读取即可。

通过使用栅栏数为3,我们将明文“HELLO WORLD”加密成了密文“HWEOLLLROD”.栅栏密码的加密过程简单快捷,但是它的安全性也很低。

由于栅栏数有限,密文很容易被破解。

五、结论通过本次实验,我们对凯撒密码、维吉尼亚密码和栅栏密码进行了实际操作和研究。

信息安全古典密码之凯撒密码

信息安全古典密码之凯撒密码

《网络攻击与防御》实验报告课程名称:信息安全技术实验名称:古典密码之凯撒密码指导教师:学生姓名:组号:实验日期:实验地点:实验成绩:一计算机科学与技术学院计算机系网络教研室制一、实验目的(1)编程实现凯撒加密、解密算法,理解密码学基础知识,初步建立密码学思维方式。

(2)通过不断增加凯撒解密难度,理解唯密文解密,提高解密性能。

实验环境操作系统:Windows 10操作系统软件工具:C++语言编译环境三、实验内容与实验要求(1)在允许输入密码条件下,编程实现凯撒密码加解密解密。

要求:①从一文本文件读入英文文章(明文或密文)。

②对读入内容加密或解密后写入另一文本文件。

(2)在不允许输入密码条件下,编程实现解密凯撒密码加密密文。

要求绘制三种情况下解密程序流程图,说明不同解密程序存在的不足。

程序需要计算、显示解密使用时间(单位:ms) o①已知cl =wk 1 v lv d errn,求pl。

(初级解密)问:两次使用凯撒,能否正确解密?(字符串用凯撒加密后的结果再用凯撒加密一次。

)②已知cl =go kbo cdenoxdc, 或cl =zh duh vwxghqwv, 求pl。

(中级解密)③已知cl =rxwvlgh wkh eleoh, wkhvh via zrugv duh wkh prvw idprxv Iq doo wkh olwhudwxuh ri wkh zruog. wkhb zhuh vsrnhq eb kdpohw zkhq kh zdv wklqnlqj dorxg, dqg wkhb duh wkh prvw idprxv zrugv Iq vkdnhvshduh ehfdxvh kdpohw zdv vshdnlqj qrw rqob iru klpvhoi exw dovr iru hyhub wklqnlqj pdq dqg zrpdq. wr eh ru qrw wr eh, wr olyh ru qrw wr olyh, wr olyh ulfkob dqg dexqgdqwob dqg hdjhuob, ru wr olyh gxoob dqg phdqob dqg vfdufhob. d sklorvrskhu rqfh zdqwhg wr nqrz zkhwkhu kh zdv dolyh ru qrw, zklfk lv d jrrg txhvwlrq iru hyhubrqh wr sxw wr klpvhoi rffdvlrqdoob. kh dqvzhuhg Iw eb vdblqj: 〃1 wklqn, wkhuhiruh dp. 〃,求pl。

rsa加密算法c语言编程实验的步骤和内容

rsa加密算法c语言编程实验的步骤和内容

rsa加密算法c语言编程实验的步骤和内容## 1. RSA加密算法简介RSA加密算法是一种非对称加密算法,由三位数学家Rivest、Shamir和Adleman于1977年提出,是目前最广泛使用的公钥加密算法之一。

RSA算法的安全性基于大数分解的困难性,即将一个大的合数分解成其质数因子的乘积。

## 2. RSA加密算法的基本原理RSA加密算法基于公钥和私钥的概念,其中公钥用于加密数据,私钥用于解密数据。

具体的加密和解密过程如下:### 2.1 密钥生成过程- 选择两个大素数p和q,计算其乘积n = p * q。

- 计算欧拉函数值φ(n) = (p-1) * (q-1)。

- 选择一个整数e,使得1 < e < φ(n)且e与φ(n)互质。

- 计算e对于φ(n)的模反元素d,即满足(e * d) mod φ(n) = 1。

- 公钥为(n, e),私钥为(n, d)。

### 2.2 加密过程- 将明文M转化为整数m,满足0 <= m < n。

- 加密后的密文C = m^e mod n。

### 2.3 解密过程- 将密文C转化为整数c,满足0 <= c < n。

- 解密后的明文M = c^d mod n。

## 3. RSA加密算法的C语言实现步骤为了实现RSA加密算法的C语言程序,我们需要按照以下步骤进行:### 3.1 定义必要的数据结构和函数我们需要定义一个结构体来存储公钥和私钥的信息,包括n、e和d。

同时,我们还需要定义一些函数来实现加密和解密的过程,包括计算模幂、计算最大公约数等。

### 3.2 生成密钥对根据密钥生成过程,我们需要实现一个函数来生成公钥和私钥。

在这个函数中,我们需要选择两个大素数p和q,并计算n、φ(n)、e 和d的值,并将其存储在定义的结构体中。

### 3.3 实现加密函数实现加密函数,输入明文M和公钥(n, e),输出密文C。

在这个函数中,我们需要将明文转化为整数m,并通过计算模幂的方法得到加密后的密文。

使用C语言实现古典加密

使用C语言实现古典加密

实训一古典加密算法一、实训目的熟悉古典数据加密的工作原理,并且能够利用相关加密算法进行加解密。

二、实训环境一台安装有Windows XP的计算机。

三、实训内容用C编写程序实现对某一文件内容用恺撒加密法进行加密,然后用解密程序进行解密。

四、实训步骤1、用C编写程序实现对某一文件内容用恺撒加密法进行加密。

2、用解密程序对密文进行解密。

五、实训效果检测上交加密程序、解密程序、原文(.txt文档)解:(1)使用的加密、解密程序代码如下:#include<stdio.h>#include<conio.h>#include<string.h>#include<malloc.h>char encrypt(char ch,int n)/*加密函数,把字符向右循环移位n*/{while(ch>='A'&&ch<='Z'){return ('A'+(ch-'A'+n)%26);}while(ch>='a'&&ch<='z'){return ('a'+(ch-'a'+n)%26);}return ch;}void menu()/*菜单,1.加密,2.解密,3.暴力破解,密码只能是数字*/{//clrscr();printf("\n========================================================="); printf("\n1.Encrypt the file");printf("\n2.Decrypt the file");printf("\n3.Force decrypt file");printf("\n4.Quit\n");printf("=========================================================\n"); printf("Please select a item:");return;}void main(){int i,n;char ch0,ch1;FILE *in,*out;char infile[20],outfile[20];//textbackground(BLACK);//textcolor(LIGHTGREEN);//clrscr();menu();ch0=getch();while(ch0!='4'){if(ch0=='1'){// clrscr();printf("\nPlease input the infile:");scanf("%s",infile);/*输入需要加密的文件名*/if((in=fopen(infile,"r"))==NULL){printf("Can not open the infile!\n");printf("Press any key to exit!\n");getch();}printf("Please input the key:");scanf("%d",&n);/*输入加密密码*/printf("Please input the outfile:");scanf("%s",outfile);/*输入加密后文件的文件名*/if((out=fopen(outfile,"w"))==NULL){printf("Can not open the outfile!\n");printf("Press any key to exit!\n");fclose(in);getch();}while(!feof(in))/*加密*/{fputc(encrypt(fgetc(in),n),out);}printf("\nEncrypt is over!\n");fclose(in);fclose(out);// sleep(1);}if(ch0=='2'){// clrscr();printf("\nPlease input the infile:"); scanf("%s",infile);/*输入需要解密的文件名*/if((in=fopen(infile,"r"))==NULL) {printf("Can not open the infile!\n");printf("Press any key to exit!\n");getch();// exit(0);}printf("Please input the key:");scanf("%d",&n);/*输入解密密码(可以为加密时候的密码)*/ n=26-n;printf("Please input the outfile:");scanf("%s",outfile);/*输入解密后文件的文件名*/if((out=fopen(outfile,"w"))==NULL){printf("Can not open the outfile!\n");printf("Press any key to exit!\n");fclose(in);getch();// exit(0);}while(!feof(in)){fputc(encrypt(fgetc(in),n),out);}printf("\nDecrypt is over!\n");fclose(in);fclose(out);// sleep(1);}if(ch0=='3'){// clrscr();printf("\nPlease input the infile:");scanf("%s",infile);/*输入需要解密的文件名*/if((in=fopen(infile,"r"))==NULL){printf("Can not open the infile!\n");printf("Press any key to exit!\n");getch();// exit(0);}printf("Please input the outfile:");scanf("%s",outfile);/*输入解密后文件的文件名*/if((out=fopen(outfile,"w"))==NULL){printf("Can not open the outfile!\n");printf("Press any key to exit!\n");fclose(in);getch();// exit(0);}for(i=1;i<=25;i++)/*暴力破解过程,在察看信息正确后,可以按'Q'或者'q'退出*/ {rewind(in);rewind(out);// clrscr();printf("==========================================================\n"); printf("The outfile is:\n");printf("==========================================================\n"); while(!feof(in)){ch1=encrypt(fgetc(in),26-i);putch(ch1);fputc(ch1,out);}printf("\n========================================================\n");printf("The current key is: %d \n",i);/*显示当前破解所用密码*/printf("Press 'Q' to quit and other key to continue......\n");printf("==========================================================\n");ch1=getch();if(ch1=='q'||ch1=='Q')/*按'Q'或者'q'时退出*/{// clrscr();printf("\nGood Bye!\n");fclose(in);fclose(out);// sleep(3);// exit(0);}}printf("\nForce decrypt is over!\n");fclose(in);fclose(out);// sleep(1);}menu();ch0=getch();}//clrscr();printf("\nGood Bye!\n");(2)原文文件为whx.txt,其内容:ahhdhjshjdhjsdhj。

信息安全实验报告

信息安全实验报告

信息安全实验报告姓名:学号:班级:教师:卫琳娜2018-11-15实验 1:密码学实验实验目的:编程实现简单古典密码算法,加深对古典密码的理解掌握简单加解密算法设计原则实验内容:1.编程实现凯撒密码,输入任意明文(26 个英文字母中的任意一个,不区分大小写),观察明文密文关系。

程序代码 :#include <stdio.h>#include <string.h>int main(){char passwd[100],encrypted[100];int i,k=3;printf(" 请输入明文 :");gets(passwd);for(i=0; i<strlen(passwd); i++){if(passwd[i] >= 'A' && passwd[i] <= 'Z'){passwd[i] = ((passwd[i]-'A')+k)%26+'A';}else if(passwd[i] >= 'a' && passwd[i] <= 'z'){passwd[i] = ((passwd[i]-'a')+k)%26+'a';}else passwd[i]=' ';}printf(" 密文为 :%s\n",passwd);return 0;}运行结果 :2.编程实现单表代换密码,输入任意明文( 26 个英文字母中的任意一个,不区分大小写),观察明文密文关系。

程序代码 :#include <stdio.h>#include <string.h>int main(){char passwd[100],encrypted[100];int i,k;printf(" 请输入明文 :");gets(passwd);printf(" 请输入移动的值(1-25):");scanf("%d",&k);for(i=0; i<strlen(passwd); i++){if(passwd[i] >= 'A' && passwd[i] <= 'Z'){passwd[i] = ((passwd[i]-'A')+k)%26+'A';}else if(passwd[i] >= 'a' && passwd[i] <= 'z'){passwd[i] = ((passwd[i]-'a')+k)%26+'a';}else passwd[i]=' ';}printf(" 密文为 :%s\n",passwd);return 0;}运行结果 :3.自行设计并实现一种简单密码,输入任意明文字符串,输出密文。

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

信息安全实验报告课程名称: _ 专业:计算机科学与技术 _2010_级_02班实验编号:实验项目_ 指导教师_ _姓名:闫斌学号: 2010012854 实验成绩:___实验一古典密码算法实验名称:古典密码算法实验类型: 设计性实验学时:4适用对象: 信息安全1.实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。

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

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

2.实验目的通过变成实现替代密码算法和置换密码算法,加深对古典密码体质的了解,为深入学习密码学奠定基础。

3.实验环境运行windows或linux操作系统的pc机,具有gcc(linux)、VC(Windows)等C语言编译环境。

4.实验内容4.1替代密码算法4.1.1根据实验远离部分对替代密码算法的介绍,创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作。

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

4.1.2替代密码算法的远离是使用替代法进行加密,就是将明文的字符用其他字符替代后形成密文。

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

4.1.3 代码#include<stdio.h>#include<math.h>#include<string.h>#define N 500int main(){/*--------------------------------*/int i=0,k,m,n,l;char str1[N],str2[N]; /*C=M+K...K is key...*/clrscr();/*--------------------------------*/printf("This is a code password program......\n");printf("Please input proclaimed in writing(M)::\n");gets(str1);/*输入要加密的明文M*/printf("Please input the key(K)(int)::\n");scanf("%d",&k);/*输入密钥K*/m=strlen(str1);/*测试明文的长度*/printf("The M length is %d\n",m);printf("\n *\n *\n *\n***\n *\n");printf("ciphertext(C) is ::\n\n");for(i=0;i<m;i++)/*加密的过程*/{n=(int)str1[i];/*将字符转换成ASCII*/if(str1[i]==' ')/*如果字符串中出现空格返回空格*/{printf(" ");str2[i]=str1[i];}else if(n>96&&n<123)/*对小写进行加密*/{n=(n-97+k)%26;if(n<0)n=26+n;l=(char)(n+97);printf("%c",l);str2[i]=l;}else if(n>64&&n<91)/*对大写进行加密*/{n=(n-65+k)%26;if(n<0)n=26+n;l=(char)(n+97);printf("%c",l);str2[i]=l;}}str2[i]='\0';/*--------------------------------*/printf("\n\nThe C length is %d",strlen(str2));printf("\n\n *\n *\n *\n***\n *\n");printf("When the ciphertext is '%s',\nThe password program is...::\n\n",str2);m=strlen(str2);for(i=0;i<m;i++)/*解密过程*/{n=(int)str2[i];/*将字符转换成ASCII*/if(str2[i]==' ')/*如果是空格,返回的也是空格*/{printf(" ");}else if(n>96&&n<123)/*对小写进行解密*/{n=(n-97-k)%26;if(n<0)n=26+n;l=(char)(n+97);printf("%c",l);}else if(n>64&&n<91)/*对大写进行解密*/{n=(n-65-k)%26;if(n<0)n=26+n;l=(char)(n+97);printf("%c",l);}}str1[i]='\0';getch();return 0;}4.1.4 运行结果4.2 置换密码4.2.1根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。

4.2.2置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。

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

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

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

4.2.3代码#include<stdio.h>#include<math.h>#include<string.h>#define N 100int main(){/*----------------------------*/int i,j,lenK,lenM,m,n,temp;int T[N];char K[N],M[N],C[N],Temp1[N],Temp2[N],Temp3[N];clrscr();/*----------------------------*/printf("This is a substitution cipher...\n");printf("Please input the M::\n");/*输入明文M*/gets(M);printf("Please input the K::\n");/*输入密钥K*/gets(K);lenK=strlen(K);lenM=strlen(M);/*测设长度*/m=lenM/lenK;/n=lenK;/*定义矩阵的长和宽*/for(i=0;i<lenK;i++)/*对密钥进行数字排序*/{temp=0;for(j=0;j<lenK;j++){if((int)K[i]<(int)K[j]){temp+=1;}}T[i]=lenK-temp;printf("%d ",T[i]);/*输出各字符对应的数字顺序*/ }/*--------------------------------*/printf("\n\nFirst........\n\n");for(i=0;i<m;i++)/*根据密钥将明文排列成矩阵*/{for(j=0;j<n;j++){Temp1[i*lenK+j]=M[i*lenK+j];printf("%c ",Temp1[i*lenK+j]);}printf("\n");}Temp1[lenM]='\0';/*--------------------------------*/printf("\nSecond........\n\n");/*进行第一次置换*/ for(i=0;i<lenK;i++){for(j=0;j<m;j++){Temp2[j*lenK+i]=Temp1[j*lenK+T[i]-1];}}Temp2[lenM]='\0';for(i=0;i<m;i++){for(j=0;j<lenK;j++){printf("%c ",Temp2[i*lenK+j]);}printf("\n");}/*-------------------------------*/printf("\nThird.......\n\n");/*进行第二次置换*/for(i=0;i<lenK;i++){for(j=0;j<m;j++){Temp3[j*lenK+i]=Temp2[j*lenK+T[i]-1];}}Temp3[lenM]='\0';for(i=0;i<m;i++){for(j=0;j<lenK;j++){printf("%c ",Temp3[i*lenK+j]);}printf("\n");}/*-----------------------------*/printf("The substitution cipher is...\n");/*输出结果*/for(j=0;j<lenK;j++){for(i=0;i<m;i++){printf("%c",Temp3[i*lenK+j]);}}getch();return 0;}4.2.4运行结果5.总结通过此次实验,对古典密码算法有了进一步的了解,同时也在过程当中学习到了如何更好的完善一个问题的求解过程。

这次的实验还可以通过MATLAB来完成。

在置换密码的算法中,未能完成解密算法,但是我会继续完成的。

相关文档
最新文档