说完了前面那些,想起个事,本系列依据内容主要来自《现代密码学》马春光编著。我就是学这本书的。

好了,古典密码就是古时候的密码,哈哈,逗你玩的,shannon的保密系统的通信理论发表前的都是古典密码,会在密码学简史中介绍这位牛人的。

学习古典密码学的意义:学习设计原理和分析方法

古典密码也是,俩门派:置换和代换,顾名思义,一个是换了个原来有的,一个是换了个原来没有的。学术点讲就是前者明文和密文空间一样,后者 不一样。你要是问我啥是明文空间和密文空间啊,我就呵呵。是M 和 C。m明文的集合,c密文的集合。对了明文有时候用p表示哦,plaintext。

置换密码就是列置换和周期置换两兄弟,倒序那个算捡来的吧。

列置换:顾名思义,操作及输出都是以列为单位。将明文以密钥长度为列数形成矩阵,按照密钥的顺序进行列选出,然后一列一列的输出。

列置换密码(距阵置换密码)

明文:ming chen jiu dian fa dong fan gong

密钥:yu lan hua

去掉密钥重复字母:yulanh,得出距阵列数为6;将明文按行填充距阵。

得到密钥字母顺序: 653142;

按列(依顺序)写出距阵中的字母。

密文:giffg hddn0 njngn cuaa0 inano meiog

解密:加密的逆过程;

周期置换:其实就是在列置换的基础上,进行行输出。

周期置换密码

–    明文:mingchen jiu dian fa dong fan gong

–    加密密钥:3421(i=1,2,3,4的一个置换f (i) =3,4,2,1)

–    加密:将明文分组(4个字母一组),然后根据规定顺序变换

–                       ming chen jiud ianf adon gfan gong

–                       ngim enhc udij nfai onda anfg ngog

–    密文:ngimenhcudijnfaiondaanfgngog

–    解密密钥:4312(3412的逆置换)

没啥说的,直接来代换密码:

也是两个流派,单表替换和多表替换。

单表代换密码:一个密文字母表。加法密码(著名的凯撒密码就是)乘法密码和仿射密码。

主要说下仿射密码

f(mi)=ci=mj,j=k1i+k2 mod n ,i,ki,k2{0,1,...,n-1}

多表代换密码:多个密文字母表。Vigenere密码,Playfair密码和hill密码

主要说下Vigenere密码

Vigenere密码是周期代替密码

当周期为1时,就是单表代替密码(加法密码)。

用户钥:有限序列k =(k1,k2,…,kd)

工作钥:无限序列K=(K1,K2,…,Ki,…) ,是用户钥的

周期性(周期为d)扩展,即

Kiki mod di =1,2,3,…

明文:M=m1m2…miml

密文:C=c1c2…cicl

工作钥:K=K1K2…KiKl

加密:ci=miKimodn,其中n为明文字母表的长度

例:用户钥为cat,对明文“vigenere cipher”加密

M:          v          i           g           e           n           e          r          e          c            i           p           h          e          r

K:          c          a           t           c           a           t           c          a          t            c           a           t           c          a

C:          x            i           z           g           n           x          t          e          v            k          p           a          g          r

此例n=26;c:2,a:0,t:19

代数密码:vernam密码

模2加运算,为什么提这个密码呢,因为他有个特点,就是加密和解密变换相同,称为对合运算。加密时是模2加,解密时也是与密钥模2加。著名的DES也是对合运算。

古典密码的统计分析:

单表代换密码中明文的统计特性在密文中仍然体现,容易被破译。加法和乘法知道一个密文对应的明文就完了,仿射强点,两个。

统计字母出现频率就是一种统计分析方法。依照正常字母频率表逐个对照。

字母频率分析法对单表代换算法最有效。原因如上

hill密码算法抵抗频率分析攻击能力最强,而对已知明文攻击最弱。hill密码是广义仿射密码,就是变换矩阵。

重合指数法对单表代换密码算法的破解最有效。

单表代换

多表代换

基本思想

明文消息中相同的字母,在加密时都是用同一固定的字母代换。

明文消息中出现的同一个字母,在加密时不是完全被同一个固定的字母代换而是根据其出现的位置次序用不同的字母代换。

优点

破译难度稍高,密钥更改便捷,增加了单表代换密码体制的灵活性。

多表代换密码的破译则相对复杂,因为明文的统计特性通过多个表的平均作用而而被隐藏起来了,能更好的抵抗明文分析。

缺点

通过统计分析地方法很容易破解。

Hill密码体制,可能抵抗不了已知明文攻击。

密码学基础知识(三)古典密码相关推荐

  1. 密码学系列(三):区块链+密码学基础知识

    密码学系列(三):区块链+密码学基础知识 一.区块链的概念 区块链概述 区块链的特点 区块链变化 市场现状 二.区块链政策与标准 区块链的特点与发展 三.区块链的定义 区块链的价值 四.区块链开发语言 ...

  2. 重力传感器 测重力代码_“重力瀑布”如何帮助您教授孩子的密码学基础知识...

    重力传感器 测重力代码 by Kamil Tustanowski 通过卡米尔·图斯坦诺夫斯基 "重力瀑布"如何帮助您教授孩子的密码学基础知识 (How "Gravity ...

  3. (六)JS基础知识三(走进作用域和闭包)【三座大山之二,不会闭包,基本不会通过】

    JS基础知识三(作用域和闭包) 提问 作用域 自由变量 闭包 this 提问 this的不同应用场景,如何取值 手写bind函数 实际开发中闭包的应用场景,举例说明 创建10个a标签,点击的时候弹出对 ...

  4. CSS基础知识---三种选择器

    CSS基础知识---三种选择器 选择器 标签选择器 id选择器 class选择器 全部代码 选择器 标签选择器 id选择器 class选择器 标签选择器 选择器优先级:id>class>标 ...

  5. 密码学基础知识-数论(从入门到放弃)

    数论知识 本文主要介绍整除.质数和合数.同余定理.模逆元素.欧几里得除法.欧拉函数.欧拉定理.费马小定理.中国剩余定理(孙子定理). 文章目录 数论知识 简介 一.整除 二.质数和合数 三.同余定理 ...

  6. C# 基础知识 (三).主子对话框数值传递

    在C# winform编程中,我们经常会遇到不同窗口间需要传递数值的问题.比如数据库的应用,主窗口填写内容num1,点击按钮,在弹出的子窗口显示对应num1值;或者在子窗口填写新注册用户名信息,在主窗 ...

  7. 三校生计算机word基础知识,三校生计算机第一次月考计算机基础、word.doc

    三校生计算机第一次月考计算机基础.word 云南省高等职业技术教育招生考试试题 计算机基础.word基础知识(9月考试卷) 姓名:_ __ ____ 得分:____ ___ 一.单项选择题(在每小题给 ...

  8. 【密码学/信息安全】#3 古典密码(含代码)

    密码学的起源: 可以追溯至古埃及时代的象形文字,经过长期的发展演进形成了当前的基于计 算机的密码体制与算法. 密码学所采用的数学工具也由简单的代数逐渐地涵盖到了信息论.数论.概率论.近似代数 等多个学 ...

  9. 密码学复习一:古典密码

    1:保证信息安全的关键要素:认证(鉴别),访问控制,数据保密,数据完整,抗否认性. 2:四种基本攻击类型:唯密文攻击(攻击者只知道一些密文),已知明文攻击(攻击者知道一些明文密文对),选择明文攻击(攻 ...

最新文章

  1. 嵌入式Linux设备驱动程序:用户空间中的设备驱动程序
  2. python selenium 进入新标签页_Python 爬虫 | 用selenium实现批改网的自动翻译
  3. ListView 空值时的友好提示
  4. 检查坏道右键单击盘符/属性/工具中的查错。
  5. java动态拼接请求_在JavaWeb项目中处理静态文件或动态链接拼接网站地址的最优处理方案...
  6. vant input框禁止调用手机键盘_【案例分享】适应网银等密码键盘的解决方案
  7. 【ClickHouse 技术系列】- ClickHouse 聚合函数和聚合状态
  8. 数据库连接池的设计思路及java实现
  9. wxpython实现简单图书管理系统
  10. 安全预警:独立发布的Oracle严重 CVE-2018-3110 公告
  11. .db怎么复制到java里_如何在MongoDB中将集合从一个数据库复制到另一个数据库
  12. 联想昭阳K22-80机器关闭或开启触摸板方法
  13. VS Code环境下编辑、编译、下载Keil工程代码
  14. 2021年安全生产模拟考试(全国特种作业操作证高处作业-高处安装维护拆除模拟考试题库二)安考星
  15. echat3没有数据的时候,如何设置文字提示:“没有数据”
  16. BBC:关于睡眠你应该知道的十件事
  17. JS中数组实现(倒序遍历数组,数组连接字符串)
  18. ajax 返回xml 怎么显示显示图片,如何使用jquery和ajax读取,解析和显示xml
  19. 2012 成都网络赛小记
  20. web2.0 时代我们需要什么样的阅读---转载

热门文章

  1. UPS技术培训系统方案
  2. 万物互联时代的边缘计算
  3. 查看防火墙状态_干货 | 华为防火墙配置,这篇文章强烈推荐收藏学习
  4. arraylist是如何扩容的?_ArrayList的源码分析
  5. 成功解决WARNING:tensorflow:Variable += will be deprecated. Use variable.assign_add if you want assignmen
  6. EL之Bagging(DTR):利用Bagging对回归问题(实数值评分预测)建模(调2参)
  7. EL之RF(随机性的Bagging+DTR):利用随机选择属性的bagging方法解决回归(对多变量的数据集+实数值评分预测)问题
  8. ETH之Solidity:Solidity的简介、安装、使用方法之详细攻略
  9. DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介、应用、经典案例之详细攻略
  10. OS_FLAG.C(3)