1.古典密码学
摩尔斯电码是无线电发明后最早使用的信息编码,通过电键敲击出点、划及中间的停顿发送
当铺密码通常使用汉字来隐藏信息,专门用来加密数字,不需要密钥,明文信息包含在加密后的密文中。较常见的当铺密码有两种,一种是将数字映射到对应笔画的汉字,另外一种是利用汉字的字形特征,当前汉字有多少笔画出头就转化成数字几。
2.现代密码学
对称加密:使用同一个密钥进行加密和解密。典型算法:DES。
DES加密算法:美国数据加密标准,速度较快,适用于加密大量数据的场合,DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用。
主要加密过程:
左边是明文右边是密钥(由64位的初始密钥减去8位的校验码得到)
与56位的密钥进行选择置换,将得到的结果分为左右两组,左边一组和右边一组分别进行左移操作,将左移后的结果和在一起进行压缩置换,可以将56位的密钥压缩成48位的密钥得到K1,上一轮左移后的结果继续进行左移操作,将左移后的结果继续合在一起进行压缩置换得到K2,如此往复进行的到K3-K16。
初始置换将64位的明文打乱。在子密钥的控制下进行16轮的迭代,得到左右两组各32位字符,进行左右交换,然后进行逆置换得到64位的密文。
下面是利用DES TOOL进行加密的过程
打开EXE文件
利用DES Tool对文本信息进行加密和解密
选择文件加密即可对文件进行加密解密。
由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解,3DES通过增加DES的密钥长度来避免类似的攻击。它相当于是对每个数据块应用三次DES加密算法。
MD5(消息摘要算法第五版)
算法的输入输出
输入:任何长度的字节流
输出:128位二进制(常以32位十六进制字符显示)
关键点:输入略微变化,输出即发生极大变化(雪崩效应)
加密过程不需要密钥,加密后的数据无法被解密。 只有输入相同的明文数据经过相同的消息摘要算法才能得到相同的密文。 算法以512位为一个分组来处理输入的信息,每一分组又被划分为16个32位子分组,经过了一系列复杂的数据填充、分组循环和换位拼接处理后,算法的输出四个32位分组,这四个32位分组级联后生成一个128位(16字节)的散列值。
非对称加密:使用两个密钥进行加密和解密,分别为公钥(所有人可用此进行加密)和私钥(仅用于接受者解密)。典型算法:RSA。
由于公钥对所有人公开,我们需要保证数据被“公钥加密后”不能被轻易反推出来。模运算是单向函数,公钥加密及运用了对模运算求逆困难的特性。
RSA的应用:加密少量数据比起DES和其它对称算法来说,RSA的运算速度要慢得多。实际使用时,RSA算法不用来加密消息,而是用来加密传输密钥,加密消息用对称算法,如DES。 实现数字签名 将RSA算法反向使用(私钥加密公钥解密),对消息摘要加密,可以实现数字签名的功能。 数字签名可以防止数据篡改、数据抵赖和数据伪造发生。
加密过程:
任意选择两个大的质数(素数)p和q。
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)是私钥。
调试运行程序,输入两个不同的质数
验证d*e=1(mod(p-1)(q-1))
利用RSA-Tool加密消息利用RSA-Tool加密消息
公钥加密(安全密钥分配)
对称加密的一大缺点是密钥的管理与分配,换句话说,如何把密钥发送到需要解密你的消息的人的手里是一个问题。在发送密钥的过程中,密钥有很大的风险会被黑客们拦截。现实中通常的做法是将对称加密的密钥进行非对称加密,然后传送给需要它的人。
公钥加密(数字签名)
(三)总结
(1) 对称加密加密与解密使用的是同样的密钥,所以速度快,但由于需要将密钥在网络传输,所以安全性不高。
(2) 非对称加密使用了一对密钥,公钥与私钥,所以安全性高,但加密与解密速度慢。
(3) 解决的办法是将对称加密的密钥使用非对称加密的公钥进行加密,然后发送出去,接收方使用私钥进行解密得到对称加密的密钥,然后双方可以使用对称加密来进行沟通。