古典密码算法实验c语言,2021信息安全 实验一 古典密码算法C语言.docx

56f301f94e600e7750589c54ffb5ee4b.gif2021信息安全 实验一 古典密码算法C语言.docx

信息安全信息安全 实验一实验一 古典密码算法古典密码算法 C C 语言语言 信息安全实验报告 课程名称 _ 专业计算机科学与技术 _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 代码 includeincludeincludedefine N 500 int main /*-*/ int i0,k,m,n,l; char str1N,str2N; /*CMK.K is key.*/ clrscr; /*-*/ printfThis is a code password program.n; printfPlease proclaimed in writingMn; getsstr1;/*输入要加密的明文 M*/ printfPlease the keyKintn; scanfd,/*输入密钥 K*/ mstrlenstr1;/*测试明文的长度*/ printfThe M length is dn,m; printfn *n *n *n*n *n; printfciphertextC is nn; fori0;i nintstr1i;/*将字符转换成 ASCII*/ ifstr1i /*如果字符串中出现空格返回空格*/ printf ; str2istr1i; else ifn96 ifnn26n; lcharn97; printfc,l; str2il; else ifn64 ifn96 ifnn26n; lcharn97; printfc,l; else ifn64 ifnn26n; lcharn97; printfc,l; str1i0; getch; return 0; 4.1.4 运行结果 4.2 置换密码 4.2.1 根据实验原理部分对置换密码算法的介绍,自己创建明文信 息,并选择一个密钥,编写置换密码算法的实现程序,实现 加密和解密操作。 4.2.2 置换密码算法的原理是不改变明文字符,只将字符在明文中 的排列顺序改变,从而实现明文信息的加密。置换密码有时 又称为换位密码。 矩阵换位法是实现置换密码的一种常用方法。它将明文中的 字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供 的顺序重新组合矩阵中字母,从而形成密文。 4.2.3 代码 includeincludeincludedefine N 100 int main /*-*/ int i,j,lenK,lenM,m,n,temp; int TN; char KN,MN,CN,Temp1N,Temp2N,Temp3N; clrscr; /*-*/ printfThis is a substitution cipher.n; printfPlease the Mn;/*输入明文 M*/ getsM; printfPlease the Kn;/*输入密钥 K*/ getsK; lenKstrlenK; lenMstrlenM;/*测设长度*/ mlenM/lenK;/ nlenK;/*定义矩阵的长和宽*/ fori0;i temp0; forj0;j ifintKi temp1; TilenK-temp; printfd ,Ti;/*输出各字符对应的数字顺序*/ /*-*/ printfnnFirst.nn; fori0;i forj0;j Temp1i*lenKjMi*lenKj; printfc ,Temp1i*lenKj; printfn; Temp1lenM0; /*-*/ printfnSecond.nn;/*进行第一次置换*/ fori0;i forj0;j Temp2j*lenKiTemp1j*lenKTi-1; Temp2lenM0; fori0;i forj0;j printfc ,Temp2i*lenKj; printfn; /*-*/ printfnThird.nn;/*进行第二次置换*/ fori0;i forj0;j Temp3j*lenKiTemp2j*lenKTi-1; Temp3lenM0; fori0;i forj0;j printfc ,Temp3i*lenKj; printfn; /*-*/ printfThe substitution cipher is.n;/*输出结果 */ forj0;j fori0;i printfc,Temp3i*lenKj; getch; return 0; 4.2.4 运行结果 5.总结 通过此次实验,对古典密码算法有了进一步的了解,同时也 在过程当中学习到了如何更好的完善一个问题的求解过程。 这次的实验还可以通过 MA TLAB 来完成。在置换密码的算法 中,未能完成解密算法,但是我会继续完成的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值