应用密码学实验 古典密码
实验一 古典密码
单表代替、多表代替
- 实验目的
通过实验熟悉掌握凯撒密码原理和多表代替密码的实现方法,编译实现加密算法,提高程序设计能力,掌握穷举破译的方法。
- 实验要求
- 输入任意的一段明文,对其进行加密并输出密文。
- 输入一段密文,利用穷举法进行唯密文攻击,输出密钥。
- 要求有对应的程序测试记录和验证记录。
- 从键盘中读取明文并加密,将密文输出。
- 实验内容
- 凯撒密码的加解密
- 知识点
凯撒密码是一种典型的单表代替密码技术,其加密方法如下:
密文=明文+密钥 mod 26
解密方法如下:
明文=密文-密钥 mod 26
- 程序代码
加密:
- 凯撒密码的穷举破译
- 知识点
凯撒密码可能的密钥有26个。所谓穷举破译,是指用所有可能的密钥尝试解密,直到找出正确的密钥和明文。穷举破译是一种唯密文攻击,任意给定一段密文,利用穷举法找出所用的密钥,最多尝试26次。
- 程序代码
- 维吉尼亚密码
- 密钥的处理
可预设密钥为“cipher”,长度为6;也可直接输入密钥(以字母形式或数字形式),再计算密钥长度,放在整形变量period中。
- 读取明文并预处理
从键盘中读取明文,取出所有字母,放入数组中;统计明文中的字母个数,放入整形变量中。
- 加密
维吉尼亚密码的加密与凯撒密码几乎完全相同,只是加密每个字符时所用的密钥在变化,用语句
- 程序代码
- 实验结果
- 凯撒密码加密
- 凯撒密码穷举破译
- 维吉尼亚密码
- 实验总结
凯撒密码是比较简单的,只是进行单表代换,实现起来也比较容易,破解起来也不难,是很不安全的密码。
凯撒密码是没有密匙的,即使没有密匙也能将它破解出来,因为凯撒移位密码只有25种密匙,最多就是将这25种可能性挨个检测一下可以了,这就是我们所说的暴力破解法。
当然,还可以使用频度分析法分析每个字母出现的频率,从而知道凯撒密码的移位数。
应用密码学实验 古典密码相关推荐
- 有趣的密码学介绍~古典密码之凯撒密码来咯~
游说万乘苦不早,著鞭跨马涉远道.仰天大笑出门去,我辈岂是蓬蒿人! 文章目录 前言 正文 古典密码 一.古典密码概述介绍 1.置换密码 2.代换密码 二.古典密码分类介绍 1.置换密码 2.编辑本段代换 ...
- 信息安全实验-古典密码算法
1.实验步骤 古典密码算法曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密. (1)替代密码 替代密码算法的原理是使用替代法进行加密,就是对明文中的字符用其他字符替代后形成密文.例如,明 ...
- (密码学实验)两种基本古典密码设计与实现—C语言—随机全排列应用
目录 一.实验目的 二.实验内容 三.实验过程 1.概要设计 (1)随机全排列生成程序 (2)程序逻辑图 2.详细设计 (1)密钥字法 (2)洗牌法 (3)公式法 (4)自设计随机16全排列 (5)生 ...
- 密码学实验报告c语言程序,密码学_实验一_古典密码算法_C语言.doc
您所在位置:网站首页 > 海量文档  > 高等教育 > 实验设计 密码学_实验一_古典密码算法_C语言.doc8页 本 ...
- 实验吧WP(密码学部分)【变异凯撒,传统知识+古典密码,try them all,trival】
一. 变异凯撒 找规律找规律,既然说是凯撒那就看看怎么移动才能得到flag. 因为flag{前四个字符是确定的,所以对比下密文和flag{的ascii码. 发现规律是这样,然后写个python脚本 # ...
- 信息安全密码学实验一:古典密码算法的设计与实现
古典密码算法的设计与实现 1.仿射密码 加法密码和乘法密码结合就构成仿射密码,仿射密码的加密和解密算法是: C=Ek(m)=(k1m+k2)mod n D=(c-k2)mod n package cz ...
- Python-现代密码学 古典密码实验
文章目录 一.题目 二.古典密码 [1]. 移位密码 [2]. 仿射变换 三.代码 一.题目 通过编程对古典密码进行解密: 1.使用穷尽密钥搜索法,破译如下利用移位密码加密的密文: BEEAKFYDJ ...
- 实验吧-密码学-传统知识+古典密码(六十甲子年)
题目信息:小明某一天收到一封密信,信中写了几个不同的年份辛卯,癸巳,丙戌,辛未,庚辰,癸酉,己卯,癸巳.信的背面还写有"+甲子",请解出这段密文. 提示了甲子年,于是找到甲子年的表 ...
- matlab实验shi,matlab 实验六 古典密码与破译
实验六 古典密码与破译 保密通讯在军事.政治.经济斗争和竞争中的重要性是不言而喻的. 在斗争或竞争中,一方要将信息传递给己方的接收者,同时又要防止其他人(特别是敌方)知道信息的内容.他采用的一种方式是 ...
最新文章
- java抽象类 抽象方法_Java基础 -- Java 抽象类 抽象方法
- 【Git】切换分支,以及git stash的使用
- 数据库知识 | 关系型数据库与非关系型数据库小记录
- 一个黑色全屏的计时器_佳作分享最佳倒数计时器设计分析【附原型实例】
- 20200219:不同路径Ⅱ(leetcode63)
- 判断形参S所指字符串是否是回文,若是,函数返回1,不是则返回0,并在main中实现输出...
- linux scp后台运行的办法
- springboot 线程池和数据库链接池配置以及多线程效率实测
- Ubuntu20.04 electron ssr配置完不好用可能的原因
- html 选择题代码,JS实现简单的选择题测评系统代码思路详解(demo)
- 苹果cmsv10模板全局响应式自适应模板电影网站模板源码
- SpringCloud微服务---学习笔记(二)--多级缓存
- 淘客返利机器人,淘宝,拼多多,京东三合一查券返利机器人搭建教程
- css利用flex实现左-中-右布局
- poj 1436 Horizontally Visible Segments(线段树)
- 接口用例设计从哪些方面考虑
- nvenc vs x264 对比(1)
- java是什么?带你了解
- 哥德巴赫猜想c语言 思路,01-哥德巴赫猜想(Goldbach's Conjecture)--(C语言)
- ECharts饼图lengend点击事件处理