《替代密码和置换密码的C语言实现》由会员分享,可在线阅读,更多相关《替代密码和置换密码的C语言实现(13页珍藏版)》请在人人文库网上搜索。

1、实验一一、实验名称:替代密码和置换密码的实现二、实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。三、实验内容:A:替代密码1、实验原理:使用替代法进行加密,将明文中的字符用其他字符替代后形成密文。最早的替代密码是由Julius Caesar 发明的Caesar (恺撒)密码,又叫循环移位密码。它的加密过程可表示为: E(m) = (m+k ) mod n其中,m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数。解密算法是:m = D(L) =(L-k)mod 26;2、算法设计:使。

2、用两个函数分别进行加密和解密的过程,在主程序中通过选择加密还是解密来调用不同函数进行替代密码的加密和解密过程实现;3、函数接口:加密:int encrypt()printf(输入明文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)mi=(bi+k)%26+64;printf(%s,&m);return 0;解密:int decode()printf(输入密文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;prin。

3、tf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)ni=(bi-k)%26+64;printf(%s,n);return 0;4、 程序流程图:5、 测试结果截图:加密:解密:B:1、 实验原理:不改变明文字符,但是把字符在明文中的排列顺序改变,来实现明文信息的加密。置换密码也被称为换位密码。本次实验使用的是矩阵换位法,是将明文中的字母按照给定的顺序安排在一个矩阵中,然后又根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵恢复正常顺序,。

4、从而恢复明文。2、算法设计:通过选择加密或解密,使用置换矩阵顺序和恢复矩阵顺序的两个函数,分别在主函数中进行调用来实现置换密码的加密解密实现;3、函数接口:加密:int jiami()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf(输入明文:n);scanf(%s, ptext);i = 0;while (ptexti != 0)t。

5、ext_len+;i+;printf(输入密钥:n);scanf(%s, key);i = 0;while (keyi != 0)key_len+;i+;for (i = 0; i#include #includeint k,i=0;char a100;char b100,m100,n100;int encrypt()printf(输入明文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)mi=(bi+k)%26+64;printf(%s,&m);r。

6、eturn 0;int decode()printf(输入密文:n);scanf(%s,a);for(i=0;ai!=0;i+)bi=ai-64;printf(输入一位密钥n);scanf(%d,&k);printf(n);for(i=0;bi!=0;i+)ni=(bi-k)%26+64;printf(%s,n);return 0;int main()int c;printf(加密选择1,解密选择2 n);scanf(%d,&c);if(c=1)encrypt();if(c=2)decode();return 0;B、置换密码:#include #include #define LENGTH 。

7、26int jiami()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0;char keyLENGTH = 0 ;char numberLENGTH = 0 ;char ptextLENGTH * 10 = 0 ;char ctextLENGTH * 10 = 0 ;printf(输入明文:n);scanf(%s, ptext);i = 0;while (ptexti != 0)text_len+;i+;printf(输入密钥:n);scanf(%s, key);i = 0;while (keyi != 0)key_len+;i+;fo。

8、r (i = 0; ikey_len; i+)numberi = 0;for (j = 0; jkey_len; j+)if (keyjkeyi)numberi+;for (i = 0; ikey_len; i+)for (j = i + 1; jkey_len; j+)if (keyj = keyi)numberj+;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)ctexti*row。

9、 + j = ptextnumberi + key_len*j;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)printf(%c, ctexti*row + j);return 0;int jiemi()int i = 0, j = 0, key_len = 0, text_len = 0, row = 0; char key1LENGTH = 0 ;char ptext1LENGTH * 10 = 0 ;char ctext1LENGTH * 10 = 0 ;char number1LENGTH = 0 ;printf(输入密文:n);scanf。

10、(%s, ctext1);while (ctext1i != 0)text_len+;i+;printf(输入密钥);scanf(%s, key1);i = 0;while (key1i != 0)key_len+;i+;for (i = 0; ikey_len; i+)int j = 0;number1i = 0;for (j = 0; jkey_len; j+)if (key1jkey1i)number1i+;for (i = 0; ikey_len; i+)int j = 0;for (j = i + 1; jkey_len; j+)if (key1j = key1i)number1j+。

11、;if (text_len%key_len = 0)row = text_len / key_len;elserow = text_len / key_len + 1;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)ptext1number1i + key_len*j = ctext1i*row + j;for (i = 0; ikey_len; i+)for (j = 0; jrow; j+)printf(%c, ptext1i*row + j);return 0;int main()int a;printf(加密选择1,解密选择2);scanf(%d, &a);if (a = 1)jiami();else if (a = 2)jiemi();return 0。

置换密码c语言,替代密码和置换密码的C语言实现相关推荐

  1. 替代密码的c语言程序,替代密码及置换密码的C语言实现.doc

    WORD完美格式 技术资料 专业整理 实验一 一.实验名称:替代密码和置换密码的实现 二.实验目的:通过编程实现替代密码算法和置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础. 三 ...

  2. 网络安全课程用C++实现简单的替代密码和置换密码

    网络安全替代密码和置换密码 代码写的有点乱且没有注释,开销也大,整体感觉并不理想. 2020.10.25(发) 替代密码 替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替 代后形 ...

  3. 有n个学生选修了c语言程序设计这门课程,C语言程序设计报告学生选修课系统(18页)-原创力文档...

    C 语 言 程 序 设 计 学校: 学院: 班级序号: 学号: :姓名 指导老师: C语言程序设计报告 一.C语言课程设计的目的: 高级语言课程设计是学习完<高级语言程序设计>课程后进行的 ...

  4. c语言 字母 八进制表示'/1011',C语言C语言第一课:C语言概述为什么学习C语言怎样学习C语言.DOC...

    [摘要]C语言 第一课: C语言概述 为什么学习C语言 怎样学习C语言 参考资料 ----------------------------------------------------------- ...

  5. 语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程。...

    语言都是相通的,学好一门语言,再学第二门语言就很简单,记录一下我复习c语言的过程. 为了将本人的python培训提高一个层次,本人最近买了很多算法的书. 这个书上的代码基本都是c语言实现的,c语言很久 ...

  6. c语言输入后没答案,C语言章节习题及答案(无指针)解读.doc

    C语言章节习题及答案(无指针)解读 <C程序设计>复习题集 第2章 基础概念 一.选择题(在下列各题的A).B).C).D)四个选项中,只有一个选项是正确的) 2.1以下叙述中正确的是 A ...

  7. c语言既适合于开发,C语言试题及答案 (1)

    C语言试题及答案 (1) 文章<C语言试题及答案 (1)>是由[作文仓库]的会员[我这么冷你怕不怕]为大家整理并分享的,仅供大家参考,欢迎阅读! 第1章 C语言概述习题 1. 单项选择题 ...

  8. 用c语言运行程序的优点,C语言学习与总结---第一章:C语言概述

    第一章:C语言概述 1.绪论 2.计算机程序 3.计算机语言 4.C语言的发展及其特点 5.最简单的C语言程序 6.运行C语言程序的方法与步骤 7.程序设计任务 1.绪论 C语言是计算机基础语言,本次 ...

  9. 【Go语言】【12】GO语言的结构体

    当我第一次接触到C语言时,就对结构体投入了极大的兴趣,认为这个东西以后大有作为,后来接触Java.C++,面向对象编程中的对象进入我的视线,经过了这么多年的磨练,回过头来再看结构体依旧是那么亲切:同时 ...

  10. 为什么要学python语言_我们为什么要学习Python语言?

    原标题:我们为什么要学习Python语言? 聊到我们为什么要学习Python语言?小编不禁又想起大佬潘石屹准备开启Python学习旅程时所发布的微博. 我们为什么要学习Python语言? 在农业社会时 ...

最新文章

  1. 调整 W600 PWM的输出频率
  2. c 字符串转数字_C语言实现十进制转216进制、十六进制转十进制
  3. 存根类 测试代码 java_嘲弄和存根–了解Mockito的测试双打
  4. python元组和集合
  5. 贴片铝电容识别及型号_电容器选型及其应用规范
  6. java日期处理简单封装
  7. 基于Matlab----MSK调制与解调
  8. C# SendMessage 全集
  9. 创建dqn的深度神经网络_深度Q网络(DQN)-I
  10. 计算机cad论文参考文献,autocad论文参考文献大全 autocad参考文献怎么写
  11. nodejs下载安装及配置环境
  12. yml文件配置数据库
  13. 防火墙资源(jetio,comodo,outpost,pc tool,zonealarm pro
  14. 广东汕尾电信稳定dns服务器,广东电信的DNS是多少?
  15. python爬虫得到谷歌学术搜索结果
  16. ChinaSoft 论坛巡礼 | 移动软件工程论坛
  17. STM32基础12--数模转换(DAC)
  18. abaqus .cae文件默认程序设置
  19. 如何搭建企业数据化运营体系?
  20. thegraph subgraph 踩坑之入门青铜

热门文章

  1. 《写作是门手艺》读书笔记
  2. windows7蓝牙怎么打开_windwos7系统怎么添加蓝牙鼠标
  3. 大整数除一相对较小的数
  4. 鼠标左键双击计算机打开属性,鼠标左键双击变成属性怎么解决?
  5. 如何卸载Vmware Workstation虚拟机
  6. git命令 之 切糕大全
  7. 2021-2027全球与中国CMF电池市场现状及未来发展趋势
  8. 宠物商店——三层架构
  9. OpenCV_tutorials 04 imgproc module - Affine Transformations
  10. nginx反向代理服务器