




免费预览已结束,剩余6页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一实验原理 古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密。它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密。下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象。 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 a100,b100; printf(please input your ming wen:n); gets(a); printf(please input mi shi n); scanf(%d,&k); printf(n); do bi=(char)(ai+k); if(bi122) bi=(char)(bi-26); i+; while(ai!=0); puts(b); getch(); 输入明文a:amy is good输入密匙:k=3密文c=a+k实验结果为:再是解密:实现程序为:#include stdio.h#include conio.hmain()int k,i=0;char a100,b100;printf(please input mi wen: n);gets(a);printf(please input mi shi: n);scanf(%d,&k);printf(n);dobi=(char)(ai-k);if(bi0)bi=(char)(bi+26);不知道三哪里的问题结果中的Y输不出来i+;while(ai!=0);puts(b);getch();结果为:(2) 置换密码先是加密实现程序#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 cMM,dMM; k=Glength(a); puts(a); t=k%n; if(t=0) x=k/n; else x=(k/n)+1; printf(%dn,x); for(i=0;ix;i+) for(j=0;j96)&(ai*n+j123) cij=ai*n+j; printf(%c,cij); else cij= ; printf(%c,cij); printf(n hehen); for(j=0;jn;j+) for(i=0;ix;i+) y=bj; printf(encrypt %dt,y); diy=cij; printf(-%ct,diy); printf(n); for(i=0;ix;i+) for(j=0;j=1&change;-i) change=FALSE; for(j=0;jaj+1) nTemp=aj; aj=aj+1; aj+1=nTemp; change=TRUE; i=0; while(ci)!=0) for(k=0;kn;k+) if(ci)=ak) bx=k; printf(%dt,bx); i+; x+; printf(n); puts(a);int main() int k; char nArrN,aN; int bN; 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); bubbl
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 银行会计结算试题及答案
- 2025年蛋品加工行业研究报告及未来行业发展趋势预测
- 2025年EVA太阳能封装胶膜行业研究报告及未来行业发展趋势预测
- 声学隔断与空间美学平衡的跨学科解决方案
- 基于机器视觉的偏心块动态磨损监测系统开发
- 基于数字孪生的轴承微裂纹早期预警系统开发路径探索
- 基于数字孪生的拔轮器分体式结构动态载荷仿真验证体系
- 基于数字孪生的凝固剂机动态工况自适应调控策略
- 汽车塑料件生产线项目商业计划书
- 农村产业融合发展示范园项目招商引资报告
- 2025年医疗器械注册与监管考试试题及答案解析
- 安全员a证考试试题库及答案
- 秩序维护人员培训课件
- 铁路作业人员安全课件
- 2025年医疗质量管理质控培训考核试题(含答案)
- 【轻质减负】第2课《中国人首次进入自己的空间站》情境化教学课件
- 心电图课件教学
- 浮吊安全知识培训课件
- 2025年边境巡逻机群无人机协同战术应用
- 后勤人员消防知识培训课件
- 中药饮片养护技术
评论
0/150
提交评论