实验一 置换密码

一、实验目的:

      通过编程实现置换密码算法,加深对古典密码体系的了解,为以后深入学习密码学奠定基础。

二、实验内容:

  1. 实验原理:

不改变明文字符,但是把字符在明文中的排列顺序改变,来实现明文信息的加密。置换密码也被称为换位密码。本次实验使用的是矩阵换位法,是将明文中的字母按照给定的顺序安排在一个矩阵中,然后又根据密钥提供的顺序重新组合矩阵中的字母,从而形成密文。

解密过程是根据密钥的字母数作为列数,将密文按照列、行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵恢复正常顺序,从而恢复明文。

2、算法设计:通过选择加密或解密,使用置换矩阵顺序和恢复矩阵顺序的两个函数,分别在主函数中进行调用来实现置换密码的加密解密实现。

3、函数接口:

加密接口代码:

解密接口代码:

开始

输入C

C==1

结束

输入明文

输入密钥

输入密钥

输入密文

输出

置换还原

输出

列置换

程序流程图:

  1. 测试结果截图:

三、实验分析总结:

1. 看到置换密码的题目,我首先想到的linux操作系统下ubuntu进行功能的实现。

2. 采用了Vim编辑器利用C语言进行程序的编写,再通过gcc编辑器进行功能的编译测试。

3.本实验是为了实现明文的加密,采用的方法是矩阵换位法,通过密钥的顺序重组形成密文。

4. 解密过程是根据密钥给出的矩阵置换产生新的矩阵恢复出原始的明文。

5.本实验采用的

明文是:wangshaofei

密钥匙:01234567890

密文是:wngshaofeia

6.通过本次编程实现置换密码算法,加深了对密码学的进一步了解,为以后深入研究密码学起了引导性作用。

四、实验代码:

若需要原始工程,关注后联系微信号:Wsf18729286646

实验项目1 置换密码相关推荐

  1. css实验内容,12个令人惊叹的CSS实验项目

    翻译:疯狂的技术宅 本文首发微信公众号:jingchengyideng 欢迎关注,每天都给你推送新鲜的前端技术文章 你可能认为 CSS 只是一种简单地为网页设计样式的语言,但它的功能比你想象的要多得多 ...

  2. 计算机基础综合实验项目报告模板,计算机基础实验报告模板.doc

    实验项目名称 Windows 基本操作 实验日期 实验目的 1. 掌握Windows系统中鼠标.键盘的使用 2. 掌握Windows系统桌面.窗口.对话框.菜单等基本操作 3. 了解Windows文件 ...

  3. java开发环境及数据类型实验_实验项目1 Java开发环境与语言基础

    <实验项目1 Java开发环境与语言基础>由会员分享,可在线阅读,更多相关<实验项目1 Java开发环境与语言基础(14页珍藏版)>请在人人文库网上搜索. 1.实验项目1 Ja ...

  4. Linux程序设计实验项目六,《linux程序设计》实验教学大纲

    <linux程序设计>实验教学大纲 课程名称:Linux程序设计 课程编号:408412420408436407 适用专业:计算机科学与技术网络工程软件工程 总 学 分:3 总 学 时:4 ...

  5. c++第二次上机实验项目二

    /* * 文件名称: c++第二次上机实验项目2 * 作 者: 谢文锐* 完成日期: 2016 年 3 月 24 日 * 版 本 号:v1.0 * 对任务及求解方法的描述部分:* 输入描述: 输入一个 ...

  6. css 图片等比例缩小_12个令人惊叹的CSS实验项目

    翻译:疯狂的技术宅 原文:https://1stwebdesigner.com/12... 本文首发微信公众号:jingchengyideng 欢迎关注,每天都给你推送新鲜的前端技术文章 你可能认为 ...

  7. python实验项目_Python3实验 项目结构(文件操作)

    Python实验 项目结构(文件操作) 一.代码 # 姓名:池鱼奥 # 学号:201700000001 import os import time def make_project(project_n ...

  8. 大规模文本分类实验-项目日志

    文本分类实验项目日志(最后更新-2019.07.19) 文章目录 1 One vs rest & stacking 二分类多分类器文本分类实验 1.1 描述 1.2 实验设计 1.2.1 旧方 ...

  9. Node.js期中爬虫实验项目

    Node.js期中爬虫实验项目 期中作业要求 基础概念引入 前期准备工作 安装node.js 安装数据库 安装Navicat Premium 15 正则表达式学习网站 课堂示例演示 示例一(显示在终端 ...

  10. 计算器 android报告,bmi计算器android开放实验项目总结报告.pdf

    . 淮海工学院计算机工程学院 开放实验报告 实验项目: Android 应用开发 学生姓名: 学 号: 专业班级: 系( 院 ): 起止日期: 2016 年 10 月 10 日- 11 月 25 日 ...

最新文章

  1. nginx怎么部署php项目,nginx怎么正确部署前端项目
  2. httpposterror_http请求405错误方法不被允许的解决 (Method not allowed)
  3. oracle的乐观锁和悲观锁
  4. .classpath 和.project文件含义
  5. 成功解决Eclipse窗口布局混乱或者Eclipse窗口布局出现单独独立小窗口的问题(图文教程)
  6. Linux socket关闭连接shutdown与close
  7. debian 升级linux内核,Debian8升级内核到4.5
  8. redis-数据类型一览
  9. 微信小程序自带地图_微信小程序之map地图
  10. VB.NET工作笔记007---ASP.NET中Session超时一直不起作用
  11. 使用java的java 命令,直接调用执行class文件
  12. Byte[]、Image、Bitmap 之间的相互转换
  13. mysql+proxysql+keepalived实现高可用的数据库读写分离
  14. 电工/模电/数电/电气控制/PLC可编程控制综合实验装置
  15. 《操作系统真象还原》第十四章 ---- 实现文件系统 任务繁多 饭得一口口吃路得一步步走啊(上二)
  16. Excel - 如何在 Excel 表格的一个单元格内换行?
  17. 零知识证明系列之二——Schnorr协议
  18. 几款免费ssh客户端软件--替代xshell选型
  19. 小勇机器人如何绑定_小勇机器人app
  20. Unity制作简单拦截近防炮——如何预测打击目标

热门文章

  1. 国产手机 不只是老罗一张嘴
  2. 最新高品质+武汉城区建筑物范围面shp格式+小区大厦学校医院占地面积
  3. 关于苹果MFI认证那些事
  4. 基于Java-web的树洞网站的设计与实现
  5. 微信小游戏保存图片到本地
  6. 《知识产权知识产权信用管理规定》解读问答
  7. 外企常见英语口语面试题
  8. dismiss和remove_Android中dismissDialog(int id)和removeDialog(int id)两个接口有什么区别
  9. C++:初始值设定项
  10. linux命令— head