实验一_:古典密码算法
- 格式:pdf
- 大小:155.83 KB
- 文档页数:4


古典密码-普莱菲尔密码Playfair
本⽂⽬的在于整合了⽹上的Playfair Cipher原理、解密及算法实现
⼤部分均为转载,可以链接到原⽂地址查看,这⾥只是整合⽂章
简介
以下直接搬运原⽂,便于查看,也可以直接链接到原⽂地址查看
ctf-wiki-Playfair
Playfair 密码(Playfair cipher or Playfair square)是⼀种替换密码,1854 年由英国⼈查尔斯 · 惠斯通(Charles Wheatstone)发明,基本算法如下:
选取⼀串英⽂字母,除去重复出现的字母,将剩下的字母逐个逐个加⼊ 5 × 5 的矩阵内,剩下的空间由未加⼊的英⽂字母依 a-z 的顺序加⼊。注意,将 q 去除,或将 i 和 j 视作同⼀字。
将要加密的明⽂分成两个⼀组。若组内的字母相同,将 X(或 Q)加到该组的第⼀个字母后,重新分组。若剩下⼀个字,也加⼊ X 。
在每组中,找出两个字母在矩阵中的地⽅。
若两个字母不同⾏也不同列,在矩阵中找出另外两个字母(第⼀个字母对应⾏优先),使这四个字母成为⼀个长⽅形的四个⾓。
若两个字母同⾏,取这两个字母右⽅的字母(若字母在最右⽅则取最左⽅的字母)。
若两个字母同列,取这两个字母下⽅的字母(若字母在最下⽅则取最上⽅的字母)。
新找到的两个字母就是原本的两个字母加密的结果。
以 playfair example 为密匙,得
P L A Y F
I R E X M
B C D G H
K N O Q S
T U V W Z
要加密的讯息为 Hide the gold in the tree stump
HI DE TH EG OL DI NT HE TR EX ES TU MP
就会得到
BM OD ZB XD NA BE KU DM UI XM MO UV IF
-Playfair
该⽹站详细地介绍了Playfair密码,包括历史、运⽤、⽹页实现、python实现等等
古典密码之乘法密码
实验⽬的
熟练掌握多表古典密码简单乘法加密算法原理及实现和应⽤。
实验原理
将⽂明内容按照N个字符长度分成不同的分组,在各分组使⽤不同的变换规则,这种⽅式叫做多表替代密码,也是凯撒密码的扩展版本,就是在凯撒密码的基础之上将变换⽅式改变⼀下。
实验内容
1、根据多表(双表)古典密码的乘法加密运算的算法,进⾏程序设计,写出加密运算的代码;
2、输⼊模q(根据明⽂确定)及加密密钥k1,k2对下列明⽂进⾏加法加密:
A graph is finite if both its vertex set and edge set are finite. In this book we study only finite graphs, and so the term ‘graph’always means ‘finite graph’.
实验环境描述
Windows 7, VC6.0
实验步骤
学⽣登录实验场景的操作1、 学⽣单击 “开始实验”进⼊实验场景,进⼊⽬标主机。
2.找到桌⾯上的Microsoft Visual C++ 6.0,双击打开。
3.新建⼀个C++ Source File,⽂件名为chengfa。
4.写代码。 在⼯作区输⼊代码,如图所⽰。
代码如下:#include
#include
#include
#include
main()
{
char M[200];
char C[200];
int K[200],q=26,i,j;
srand( (unsigned)time( NULL ) );
for(j=0;j<=200;j++){
K[j]=rand()%50;
}printf("please input chars:n");
gets(M);
for(i=0;M[i]!='0';i++){
if(M[i]>='a'&&M[i]<='z'){
C[i]=((M[i]-'a'+1)*K[i])%q+'a';
}
else if(M[i]>='A'&&M[i]<='Z')
古典密码的实验报告
古典密码的实验报告
引言:
密码学作为一门古老而又神秘的学科,一直以来都吸引着人们的兴趣。在古代,人们用各种各样的密码来保护重要信息的安全性。本实验旨在通过实际操作,探索古典密码的加密原理和破解方法,从而深入了解密码学的基本概念和应用。
一、凯撒密码
凯撒密码,又称移位密码,是最简单的一种古典密码。其原理是通过将明文中的每个字母按照一定的规则进行移位,得到密文。在本实验中,我们选择了一个简单的凯撒密码进行破解。
首先,我们选择了一段明文:“HELLO WORLD”,并将其按照凯撒密码的规则进行移位,假设移位数为3,则得到密文:“KHOOR ZRUOG”。接下来,我们尝试使用暴力破解的方法来还原明文。
通过尝试不同的移位数,我们发现当移位数为3时,得到的明文与原文完全一致。这表明我们成功地破解了凯撒密码,并还原了原始的明文。
二、维吉尼亚密码
维吉尼亚密码是一种基于多个凯撒密码组合而成的密码算法。其原理是通过使用不同的移位数对明文进行加密,从而增加了密码的复杂度。
在本实验中,我们选择了一段明文:“CRYPTOGRAPHY”,并使用维吉尼亚密码进行加密。我们选择了一个关键词“KEY”作为加密密钥。首先,我们将关键词“KEY”重复至与明文长度相同,得到“KEYKEYKEYKEYK”。然后,将明文中的每个字母与关键词中对应位置的字母进行凯撒密码的移位操作。 经过加密后,我们得到了密文:“LXFOPVEFRNHR”。接下来,我们尝试使用破解方法来还原明文。
通过尝试不同的关键词和移位数的组合,我们发现当关键词为“KEY”且移位数为3时,得到的明文与原文完全一致。这表明我们成功地破解了维吉尼亚密码,并还原了原始的明文。
三、栅栏密码
栅栏密码是一种基于换位操作的密码算法。其原理是通过将明文中的字母按照一定的规则进行重新排列,得到密文。
在本实验中,我们选择了一段明文:“HELLO WORLD”,并使用栅栏密码进行加密。我们选择了栅栏的高度为3。首先,我们将明文按照栅栏的高度进行分组,得到:
.
Word文档
哈尔滨工程大学
实 验 报 告
实 验 名 称: 古典密码算法
班 级:
学 号:
姓 名:
实 验 时 间: 2014年4月
成 绩:
指 导 教 师:
实验室名称:
哈尔滨工程大学实验室与资产管理处 制
.
Word文档
.
Word文档 一、实验名称 古典密码算法
二、实验目的
通过编程实现经典的代替密码算法和置换密码,包括移位密码、维吉尼亚密码、周期置换密码、列置换密码,加深对代替技术的了解,为现代分组密码实验奠定基础。
三、实验环境(实验所使用的器件、仪器设备名称及规格)
运行Windows 或Linux 操作系统的PC 机,具有gcc(Linux)、VC(Windows)等C 语言编译环境。
四、实验任务及其要求
(1)根据实验原理部分对移位密码的介绍,自己创建明文信息,并选择一个密钥,编
写移位密码的实现程序,实现加密和解密操作。
(2)根据实验原理部分对维吉尼亚密码的介绍,自己创建明文信息,并选择一个密钥,
编写维吉尼亚密码的实现程序,实现加密和解密操作。
(3)根据实验原理部分对周期置换密码的介绍,自己创建明文信息,并选择一个密钥,
编写周期置换密码的实现程序,实现加密和解密操作。
(4)根据实验原理部分对列置换密码的介绍,自己创建明文信息,并选择一个密钥,