实验一 古典密码

单表代替、多表代替

  • 实验目的

通过实验熟悉掌握凯撒密码原理和多表代替密码的实现方法,编译实现加密算法,提高程序设计能力,掌握穷举破译的方法。

  • 实验要求
  1. 输入任意的一段明文,对其进行加密并输出密文。
  2. 输入一段密文,利用穷举法进行唯密文攻击,输出密钥。
  3. 要求有对应的程序测试记录和验证记录。
  4. 从键盘中读取明文并加密,将密文输出。
  • 实验内容
  • 凯撒密码的加解密
  1. 知识点

凯撒密码是一种典型的单表代替密码技术,其加密方法如下:

密文=明文+密钥 mod 26

解密方法如下:

明文=密文-密钥 mod 26

  1. 程序代码

加密:

  • 凯撒密码的穷举破译
  1. 知识点

凯撒密码可能的密钥有26个。所谓穷举破译,是指用所有可能的密钥尝试解密,直到找出正确的密钥和明文。穷举破译是一种唯密文攻击,任意给定一段密文,利用穷举法找出所用的密钥,最多尝试26次。

  1. 程序代码

  • 维吉尼亚密码
  1. 密钥的处理

可预设密钥为“cipher”,长度为6;也可直接输入密钥(以字母形式或数字形式),再计算密钥长度,放在整形变量period中。

  1. 读取明文并预处理

从键盘中读取明文,取出所有字母,放入数组中;统计明文中的字母个数,放入整形变量中。

  1. 加密

维吉尼亚密码的加密与凯撒密码几乎完全相同,只是加密每个字符时所用的密钥在变化,用语句

  1. 程序代码

  • 实验结果
  • 凯撒密码加密

  • 凯撒密码穷举破译

  • 维吉尼亚密码

  • 实验总结

凯撒密码是比较简单的,只是进行单表代换,实现起来也比较容易,破解起来也不难,是很不安全的密码。

凯撒密码是没有密匙的,即使没有密匙也能将它破解出来,因为凯撒移位密码只有25种密匙,最多就是将这25种可能性挨个检测一下可以了,这就是我们所说的暴力破解法。

当然,还可以使用频度分析法分析每个字母出现的频率,从而知道凯撒密码的移位数。

应用密码学实验 古典密码相关推荐

  1. 有趣的密码学介绍~古典密码之凯撒密码来咯~

    游说万乘苦不早,著鞭跨马涉远道.仰天大笑出门去,我辈岂是蓬蒿人! 文章目录 前言 正文 古典密码 一.古典密码概述介绍 1.置换密码 2.代换密码 二.古典密码分类介绍 1.置换密码 2.编辑本段代换 ...

  2. 信息安全实验-古典密码算法

    1.实验步骤 古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密. (1)替代密码 替代密码算法的原理是使用替代法进行加密,就是对明文中的字符用其他字符替代后形成密文.例如,明 ...

  3. (密码学实验)两种基本古典密码设计与实现—C语言—随机全排列应用

    目录 一.实验目的 二.实验内容 三.实验过程 1.概要设计 (1)随机全排列生成程序 (2)程序逻辑图 2.详细设计 (1)密钥字法 (2)洗牌法 (3)公式法 (4)自设计随机16全排列 (5)生 ...

  4. 密码学实验报告c语言程序,密码学_实验一_古典密码算法_C语言.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp实验设计 密码学_实验一_古典密码算法_C语言.doc8页 本 ...

  5. 实验吧WP(密码学部分)【变异凯撒,传统知识+古典密码,try them all,trival】

    一. 变异凯撒 找规律找规律,既然说是凯撒那就看看怎么移动才能得到flag. 因为flag{前四个字符是确定的,所以对比下密文和flag{的ascii码. 发现规律是这样,然后写个python脚本 # ...

  6. 信息安全密码学实验一:古典密码算法的设计与实现

    古典密码算法的设计与实现 1.仿射密码 加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是: C=Ek(m)=(k1m+k2)mod n D=(c-k2)mod n package cz ...

  7. Python-现代密码学 古典密码实验

    文章目录 一.题目 二.古典密码 [1]. 移位密码 [2]. 仿射变换 三.代码 一.题目 通过编程对古典密码进行解密: 1.使用穷尽密钥搜索法,破译如下利用移位密码加密的密文: BEEAKFYDJ ...

  8. 实验吧-密码学-传统知识+古典密码(六十甲子年)

    题目信息:小明某一天收到一封密信,信中写了几个不同的年份辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳.信的背面还写有"+甲子",请解出这段密文. 提示了甲子年,于是找到甲子年的表 ...

  9. matlab实验shi,matlab 实验六 古典密码与破译

    实验六 古典密码与破译 保密通讯在军事.政治.经济斗争和竞争中的重要性是不言而喻的. 在斗争或竞争中,一方要将信息传递给己方的接收者,同时又要防止其他人(特别是敌方)知道信息的内容.他采用的一种方式是 ...

最新文章

  1. java抽象类 抽象方法_Java基础 -- Java 抽象类 抽象方法
  2. 【Git】切换分支,以及git stash的使用
  3. 数据库知识 | 关系型数据库与非关系型数据库小记录
  4. 一个黑色全屏的计时器_佳作分享最佳倒数计时器设计分析【附原型实例】
  5. 20200219:不同路径Ⅱ(leetcode63)
  6. 判断形参S所指字符串是否是回文,若是,函数返回1,不是则返回0,并在main中实现输出...
  7. linux scp后台运行的办法
  8. springboot 线程池和数据库链接池配置以及多线程效率实测
  9. Ubuntu20.04 electron ssr配置完不好用可能的原因
  10. html 选择题代码,JS实现简单的选择题测评系统代码思路详解(demo)
  11. 苹果cmsv10模板全局响应式自适应模板电影网站模板源码
  12. SpringCloud微服务---学习笔记(二)--多级缓存
  13. 淘客返利机器人,淘宝,拼多多,京东三合一查券返利机器人搭建教程
  14. css利用flex实现左-中-右布局
  15. poj 1436 Horizontally Visible Segments(线段树)
  16. 接口用例设计从哪些方面考虑
  17. nvenc vs x264 对比(1)
  18. java是什么?带你了解
  19. 哥德巴赫猜想c语言 思路,01-哥德巴赫猜想(Goldbach's Conjecture)--(C语言)
  20. ECharts饼图lengend点击事件处理

热门文章

  1. python可以写脚本_Python写一个痒痒鼠脚本
  2. 网站如何实现http跳转到https?
  3. 记录vue-cli2打包项目静态文件夹static到七牛云存储上,并使用七牛云融合cdn的过程
  4. 网络推广用的数据分析工具
  5. 2017华为软件精英挑战赛参赛过程回顾与心得
  6. Spring 3.x企业应用开发实战
  7. 华为研发团队是如何管理的?
  8. java做爬虫解决521错误
  9. 网络编程的开始(猫娘和汪君的凄美爱情故事)
  10. 再谈基于 Kafka 和 ZooKeeper 的分布式消息队列原理