密码学实验1 古典密码算法
更新时间:2023-05-29 16:54:01 阅读量: 实用文档 文档下载
- 密码学实验总结推荐度:
- 相关推荐
一.实验原理
古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。
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 = L
2. 置换密码
置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密。置换密码有时又称为换位密码。
矩阵换位法是实现置换密码的一种常用方法。它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文。例如,明文为 attack begins at five,密钥为 cipher,将明文按照每行 6
列的形式排在矩阵中,形成如下形式:
a t t a c k
b e g i n s
a t f i v e
根据密钥 cipher中各字母在字母表中出现的先后顺序,给定一个置换: 1 2 3 4 5 6
f =
1 4 5 3 2 6
根据上面的置换,将原有矩阵中的字母按照第 1 列,第 4 列,第 5 列,第 3 列,第 2列,第 6 列的顺序排列,则有下面形式:
a a c t t k
b i n g e s
a I v f t e
从而得到密文:abatgftetcnvaiikse
其解密的过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文。
二.实验目的
通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础。
三.实验环境
运行 windows 或 linux 操作系统的 PC 机,具有 gcc(linux)、VC(windows)等 C语言编译环境。
四.实验内容和步骤
1. 根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择一个密钥 k,编写替代密码算法的实现程序,实现加密和解密操作。
2. 根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作。
五.实验报告要求
要求上述密码算法最后的实现程序提供加密和解密两个接口:int encrypt ( )和 int decrypt ( ),当加密或者解密成功时返回 CRYPT_OK,失败时返回 CRYPT_ERROR。
六、实验结果
(1) 替换密码的加密解密
先是加密
实现程序为:
#include "stdio.h"
#include "conio.h"
main()
{
int k,i=0;
char a[100],b[100];
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();
}
输入明文a:amy is good
输入密匙:k=3
密文c=a+k
实验结果为:
再是解密:
实现程序为:
#include "stdio.h"
#include "conio.h"
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]<0){
b[i]=(char)(b[i]+26);不知道三哪里的问题结果中的Y输不出来 }
i++;
}while(a[i]!='\0');
puts(b);
getch(); }
结果为:
(2) 置换密码
先是加密
实现程序
#include<stdio.h>
#define TRUE 1
#define FALSE 0
#define N 1000
#define M 50
int 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;
}
输入明文:attack begins at five 输入密钥:cipher
排序为:0 3 4 2 1 5
加密结果为:
解密不知道怎么弄,不好意思啦!
正在阅读:
密码学实验1 古典密码算法05-29
大理石开采设备介绍04-26
2018年马鞍山市中考数学试题与答案05-24
国际私法案例04-01
全球九大CEO04-28
VB上机试题及答案03-16
《龟兔赛跑》新编作文450字06-26
中招百日宣誓大会流程04-11
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 密码学
- 算法
- 古典
- 密码
- 实验
- 小学六年级语文上册期末试卷分析
- 包装标准化与质量法规
- 江苏省清江中学2014-2015学年高二上学期期末考试地理试题(选修)
- 外研版英语八年级下册期中考试试卷
- 武汉工程大学考研招生简章
- 小学一年级汉语拼音基础练习题(合集)1
- 十三五重点项目-电子商务物流项目资金申请报告
- 当代资本主义社会的三大文化思潮
- 《设计的一般过程》说课稿
- (汇总5份试卷)2018年合肥市九年级上学期期末化学检测试题
- 2011年职称英语等级考试真题参考答案及解析(理工类B级)
- 2016年大学英语六级阅读备战方法
- 汽轮机主油泵与交流润滑油泵切换失败原因及对策
- 2012届高考一轮复习政治课时作业第二十一课 文化与社会
- 太阳能手机充电器含
- 中等职业学校专业目录新旧对照表
- 临汾站1-12.0m旅客地道支架方案应力检算书
- 医学微生物学试题集和答案
- 高中政治人教版必修四 第一单元 第一课 第二框 关于世界观的学说
- Morlet小波在振动信号包络检测中的应用