密码学发展史:
古典密码学:①、替换法:发送者和接收者根据【原文和密文对照表单】进行加密和解密,其中有单表替换和多表替换。
②、移位法:加密的原文所有字母按照一定的偏移量向前或者向后得到的编码序列。
近代密码学:恩尼格玛机:因古典密码的安全性受到了威胁,近代密码学出现了加密机器,本质上还是多表替换和移位,只不过表的数量和复杂度更好,破解更难
现代密码学:
①、散列函数:经过一系列的哈希函数运算,最终得到固定长度的哈希值,比如MD5是16字节固定长度的哈希值,SHA-1是20字节哈希值等。验证数据传输过程中的完整性。
②、对称加密:利用相同的密钥进行加密和解密,常见的有DES/AES算法,3DES算法,TDEA算法,Blowfish算法,RC5算法,IDEA算法。
③、非对称加密:利用私钥或者公钥进行加密和解密,私钥是个人持有,必须安全保存,否则安全性无法保证。
常用的加密方式:
对称加密:采用单密钥的加密方式,利用相同的密钥进行信息的加密和解密,称为对称加密,也叫单密钥加密。
特点:1、加密速度快, 可以加密大文件,块加密,加密速度快。 2、密文可逆, 一旦密钥文件泄漏, 就会导致数据暴露 3、加密后编码表找不到对应字符, 出现乱码,固一般结合Base64使用,保证可读性。
Base64算法原理:
1、构成规则由大写字母A-Z=26个字母,a-z=26个字母,0-9=10个数字,以及+和/这两个字符,总共64个字符
2、如果在64字符中没有找到对应的字符会进行补“=”
非对称加密:
利用公钥和私钥进行加密或解密过程,公钥和私钥是一对,只有使用对应的公钥加密后的密文才能用对应的私钥解密。
加密模式:
①、ECB:Electronic codebook,将明文分成多个密码块大小,并对每个块进行加密。
②、CBC:Cipher-block chaining,每一个明文块都需要和前一个密码块进行异或后再进行加密,依赖于前一个加密块。
消息摘要:
通过散列函数,对文件或者消息进行单向的、不可逆的固定长度的输出,保证数据不被篡改,常见的算法有:MD5,SHA-1,SHA-256,SHA-512等
数字签名:
通过结合数字摘要与非对称加密算法针对发送者的消息进行加密成无法伪造的消息串。包括:数字摘要可以验证文件或者消息无法篡改,非对称加密用于鉴定身份。
数字证书:
如果在数字签名过程中的公钥被伪造,那么就无法确定最终数字签名的合法性,数字证书这时候就可以保证即使公钥被篡改也能被正确验证签名的合法性。
比如:https的网站,首次访问网站的时候客户端会先从服务端加载数字证书,来验证网站的合法性