一、古典密码学
何谓“加密”
“密码”或“加密系统”用于“加密”数据。
对于原始的未加密的数据,我们称之为“明文”
对于加密的结果,我们称之为“密文”。
通过称为“解密”的过程,我们把密文恢复成原始的明文。

凯撒密码(公元前54年):
消息的加密是通过将当前字母替换为在常规字母表中第n个位置之后的那个字母来完成的。

换位密码保持所有字母数量不变,只改变字母的排列,一般是将明文写在一个给定大小的矩阵中,然后对行和列依据特定的序列进行置换操作。

理想的加密系统
过去的明文和密文攻击者可以知道
加密和解密的算法对方可以知道
只要密钥不泄露,对方就无法破解新的密文
可以公开除了密钥之外的整个密码系统的一切内容

培根密码(Baconian Cipher)是一种替换密码,16世纪由英国哲学家兰西斯·培根(知识就是力量口号的提出者)创造,每个明文字母被一个由5字符组成的序列替换。
猪圈密码(Pigpen cipher)是一种以格子为基础的简单替换密码。17世纪左右,共济会常常使用这种密码保护一些私密纪录或用来通讯,所以又称共济会密码。
摩尔斯电码是无线电发明后最早使用的信息编码,通过电键敲击出点、划及中间的停顿发送。
当铺密码通常使用汉字来隐藏信息,专门用来加密数字,不需要密钥,明文信息包含在加密后的密文中。
较常见的当铺密码有两种,一种是将数字映射到对应笔画的汉字,另外一种是利用汉字的字形特征,当前汉字有多少笔画出头就转化成数字几。
二、现代密码学

DES加密的三个原则
混淆(confusion):使密文与密钥的关系尽可能复杂化,使得对手即使获取了许多明文和对应的密文,以及关于密文的一些统计特性,也无法推测密钥。
扩散(diffusion):让明文中的每一位影响密文中的许多位,或者说让密文中的每一位受明文中的许多位的影响。这样可以隐蔽明文的统计特性。当然,理想的情况是让明文中的每一位影响密文中的所有位,或者说让密文中的每一位受明文中所有位的影响。
分组(block cipher):可以看成经典的电报密码本加密技术的现代传承,其中由密钥来决定电报密码本的选择。一次加密一组数据,密钥长度为一组数据的长度。
DES加密原理
DES(Data Encryption Standard)采用分组加密。使用64位的分组长度和56位的密钥长度,将64位的输入经过一系列变换得到64位的输出。DES算法利用多次组合替代算法和换位算法,通过混淆和扩散的相互作用,把明文编制成密码强度很高的密文。解密则使用了相同的步骤和相同的密钥。
64位数据为一组进行加密
初始置换根据一张8*8的置换表,将64位的明文打乱
与56位的密钥经16轮次迭代运算形成的初始密文
最后经过初始逆置换得到分组的最终密文

DES的压缩、扩展和置换操作使其具有很强的雪崩效应。即输入明文或密钥中一个比特的变化会导致输出中至少一半比特的密文发生变化,这使得穷举试凑寻找其中规律变得不可能。
DES加密特点
DES算法产生密钥的方式简单,密钥一般也比较短。
DES算法加密解密速度快,效率很高,适合对大数据量的数据进行加密。
DES算法的安全性依赖于密钥的高度保密,通信双方必须有方法能保证安全的分享密钥,并定期更换DES密钥。

RSA概述
RSA算法基于数论构造,具体难题是大素数乘积的因子分解。
将两个大素数相乘十分容易,但对其乘积进行因式分解却极其困难,因此可以将乘积作为加密密钥公开。

公钥和私钥的产生
任意选择两个大的质数(素数)p和q,p不等于q,计算N=pq
根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1)
选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1)
用以下这个公式计算d:d×e ≡ 1 (mod (p-1)(q-1))
将p和q销毁后,(N,e)是公钥,(N,d)是私钥
例如:
选素数p=47和q=71,得N=3337,(n)=(47-1)×(71-1)=3220
选择e=79,求得私钥d=e-11019(mod 3220)公开N=3337和e=79

加密消息
假设Bob想给Alice送一个消息,他知道Alice产生的公钥N和e
将原始信息分为多段,每一段(假定为n)分别用以下公式计算出c:
将多个n计算出的多个c串在一起,就是密文,发送即可。
例如:公钥(N,e)=(3337,79),私钥(N,d)=(3337,1019)
现要发送明文688,计算:68879(mod 3337)=1570

解密消息
Alice得到Bob的消息c后就可以利用她的密钥(N,d)来解码。她可以用以下这个公式来将c转换为n:

得到n后,她可以将原来的信息m重新复原。
例如:公钥(N,e)=(3337,79),私钥(N,d)=(3337,1019)
收到密文1570后,用私钥d=1019进行解密:
15701019(mod 3337)=688

例如:公钥(N,e)=(3337,79),私钥(N,d)=(3337,1019)
收到密文1570后,用私钥d=1019进行解密:
15701019(mod 3337)=688

RSA应用
加密少量数据
比起DES和其它对称算法来说,RSA的运算速度要慢得多。
实际使用时,RSA算法不用来加密消息,而是用来加密传输密钥,加密消息用对称算法,如DES。
实现数字签名
将RSA算法反向使用(私钥加密公钥解密),对消息摘要加密,可以实现数字签名的功能。
数字签名可以防止数据篡改、数据抵赖和数据伪造发生。

古典密码学与现代密码学相关推荐

  1. 密码学复习(密码学及其信息安全基础)(陈小松)

    密码学复习(密码学及其信息安全基础)(陈小松) 整除与同余 1 2 经典密码 概念 凯撒密码 仿射密码 维吉尼亚密码 费尔南密码 普莱费尔密码 希尔密码 现代密码 1 2 整除与同余 1 2 经典密码 ...

  2. 密码学基础篇----密码学的加解密

    认识密码学 什么是密码 密码简单来说就是用不是我们所熟悉的,不能马上识别的符号来代替的信息. 大概过程就是这样 密码学的发展史 古典密码学(1949年之前) 主要特点:数据的安全基于算法的保密. 密码 ...

  3. python密码学编程pdf-Python密码学编程PDF电子书免费下载

    本书主要介绍了加密算法,同时从Python编程的角度来引导读者将加密算法更好地实现.书中不仅讲述了详细的算法理论,还附以详细的代码示例帮助读者更好地学习算法,并最终实现加密算法.除此之外,书中还提供了 ...

  4. python密码学编程pdf-Python密码学编程 PDF 下载

    相关截图: 资料简介: Python是一种高级程序设计语言,因其简洁.易读及可扩展性日渐成为程序设计领域备受推崇的语言.同时,Python语言在算法领域也得到了很好的应用.本书通过理论和实例相结合的方 ...

  5. 密码学电子书_密码学中的电子密码书(ECB)

    密码学电子书 This Electronic Code Book (ECB) is cryptography as a mode of operation for a block cipher, wi ...

  6. python 密码学计算_python 密码学示例——理解哈希(Hash)算法

    Hash 是密码学安全性的基石,它引入了单向函数(one-way function)和指纹(fingerprint)的概念.即: 对于任意输入,都可以产生相同的.唯一的输出值 输出值中不包含输入值的任 ...

  7. 经典密码学与现代密码学

    一.密码学概论 1.密码学是构建功能更强大.更有效的新的加密-解密方法的科学. 2.密码分析学是发现已有加密法的弱点,以便不用密钥就能还原成明文的科学.. 3.编码法就是用字.短语或数字来替代明文.生 ...

  8. 【密码学一】密码学概念、密码学初体验

    一.密码学 1.密码信息安全常识与威胁 不要使用保密的密码算法 使用低强度的密码比不进行任何加密更危险 任何密码总有一天都会被破解 密码只是信息安全的一部分 不要使用保密的密码算法 很多企业都有下面这 ...

  9. 计算机密码学试题,现代密码学试卷(含答案)

    武汉大学计算机学院 信息安全专业2004级"密码学"课程考试题 (卷面八题,共100分,在总成绩中占70分) 一.单表代替密码(10分) ① 使加法密码算法称为对合运算的密钥k称为 ...

最新文章

  1. Java EE学习心得
  2. mysql文件头标记_通过文件头准确识别PHP上传的文件类型 ( 一 )
  3. python 空数组_从零开始学python之numpy
  4. 挑战极限--有本事拿.Net+SQL SERVER试试4秒极限!
  5. jsp页面间的传值方法
  6. oracle: 在sqlplus中,执行sql语句
  7. Asterisk NAT
  8. 洛谷——P1495 曹冲养猪
  9. matlab的libsvm工具箱(faruto版本)配置问题汇总,用于VS2015+R2017a
  10. eclipse.ini
  11. 04_部署 etcd 集群
  12. python使用phone实现手机号归属地查询
  13. 三角形,斜线,表头css实现方法
  14. Linux DMA驱动构架分析
  15. 每日一练-游戏通关时间最短
  16. 方法引用错误:reason: no instance(s) of type variable(s) exist so that String conforms to Person
  17. win10定时关机怎么设置(Win10怎么设置亮度)
  18. 黑苹果活动监视器闪退的解决办法
  19. arcgis的基本使用1
  20. 完全卸载 Nodejs

热门文章

  1. Linux用户组管理
  2. 利用js,实现网页上实时更新时间,需要时直接拿来用,不需要改动
  3. SQL 行转列 列转行 case when 写法
  4. 传智黑马java基础学习——day09(面向对象、及封装)
  5. python中的zip()方法
  6. android nfc后台,android NFC开发简单入门
  7. JS基础-字符串拆分、截取、查找汇总
  8. Java多媒体框架JFM中的播放器
  9. HM1548B升压转换器芯片的数据手册免费下载
  10. EIA 标准电阻速查表