1.古典加密方法
- 代替密码(如移位密码,单表置换,多表置换):又称为替换密码,就是按照一定的要求,将明文中的每一个字母转换成另一个字母,明文中字符位置不变但是本身改变了;(例如单表置换凯撒密码)
- 换位密码:改变明文中字符的位置但是明文中的字母不变(字母不变但顺序改变);(如天书密码)
- 对称加密算法:又称为传统密码算法,主要特点就是解密算法与加密算法相同或者是加密算法的逆运算,它的安全性依赖于使用者的保密性;
- 对称算法:分组密码和序列密码(流密码)
- 分组密码:将明文分成固定长度的组或块,然后用同一个密钥去加密,输出密文的长度也是一致的;
- 序列密码:使用一个随机序列与明文叠加产生密文序列,解密时,再将同一个随机序列与密文相叠加,恢复明文;
2.密码技术概述
常用的部分术语:明文P、加密E、密文C、解密D、算法、密钥K;
现代密码学的两个重要分支:对称加密算法(加密与解密密钥相同)和公开密钥算法(加密与解密密钥不同);
3.数据加密标准DES
由IBM公司研制出来的(Data Encryption Standrad);1970年5月被美国国家标准局公布为数据加密标准的一种分组加密算法;
DES是64位一组对称数据加密,64位明文输入和64为密文输出,密钥长度是56位,但是密钥通常有64位;还有的就是奇偶校验位,每组都有一个奇偶校验位;(就是在每组中都有1个,总共有8个组)
对于DES算法的介绍(基本的步骤顺序):
- 对于输入的明文从右到左按顺序每64位为一组,不足64位的补0,按组进行加密和解密;
- 进行初始置换;
- 将置换后的明文分为左右两个组,每个组32位;
- 进行16轮变换;
- 将变换后的左右两部分合并在一起;
- 逆初始变换,输出64位密文;
- 最后表示初始置换是有规则的,必须按照规定变化;
S盒代替是DES算法的核心部分,而且这是非线性的,其它的都是线性的;
目前发展的3DES,三重DES算法,就是
先使用k1密钥先进行加密,再使用k2密钥进行解密,最后再使用k1密钥进行加密;(这就是整个加密过程)
解密过程正好相反;如果k1 = k2 则相当于普通的DES算法;
所有变换过程几乎都是有规律的;
4.Rijndael算法(AES算法)
- Rijndael算法是一种分组密码体制,其明文密码长度和密钥密码长度可以是128比特、192比特或者256比特;可以记为AES-128、AES-192等;
- AES算法比DES支持更长的密钥;
- 有限域:通俗讲的就是函数的运算结果包含在一个域中,不同于实数域,有限域有一个最大值,所有超过这个最大值的都会经过一定的方法使他回到这个域;
- AES算法是以字节(8bit)和字(32bit)作为 处理单位;将明文分为Nb个字,将密钥分为Nk个字,每个字节为4字节。
- 当明文是分组长度为128时,经过AES加密后或解密后,所得到的输出依旧是128位;
- 在AES算法中所有运算都是以字节作为最基本的单位;
- AES算法加密过程:
(1)S盒变换
(2)行位移变换
(3)列混合变换
(4)扩展密钥
(5)圈密钥加法变换 - AES算法的解密过程:
(1)逆行位移变换
(2)逆S盒变换
(3)逆列混合变换
(4)圈密钥使用 - 对AES算法最有效的攻击是穷举密钥攻击;
5.公开密钥机制
- 在公开密钥算法中,有一对密钥(pk,sk),即公开密钥(public key)和私人密钥(private key);
- 在公开密钥机制中,加密密钥和解密密钥不能够互相推导出来,或者很难推导出来;
- 在公开密钥算法中,公开密钥和私人密钥必须要配对使用;
- 公开密钥算法都是建立在严格的数学基础上,公开密钥和私人的产生也是通过数学的方法产生;公开密钥算法的安全性依赖于某个很难解决的数学问题;
6.RSA算法
- RSA算法属于公开密钥体制算法,首个适用于签名的算法;
- 与传统的堆对称方法相比,RSA算法提供了数字签名技术和数字认证技术;
- 减轻了密钥分配和管理的工作量;如有N个节点时,DES算法进行数据加密需要使用N(N-1)/2对密钥;但是RSA只需要N对密钥;
- 用欧拉公式求r与多少的个互为质数:
- 求最大公约数:用欧几里得算法,每次的余数除以除数,除以上一次的除数,知道余数为0,,则它的上一次余数就是最大公约数;(注意10/3中10是被除数,而三是除数,结果是3余1)
结果是gcd(50,35)=5;