现代密码学
- ① 散列函数
- ② 对称密码
- ③ 非对称密码
1.1 对称加密
- 对称加密: 加密和解密使用的是相同密钥。(只有一把钥匙)。
- 对称加密 分成流加密 和 块加密。
流密码是对信息流中的每一个元素(一个字母或一个比特)作为基本的处理单元进行加密;块密码是先对信息流分块,再对每一块分别加密。
例如:
流加密:123456789,先对1加密,再对2加密,再对3加密······ 最后把加密的结果 拼接在一起。
块加密: 1234 5678 ,相当于分组加密。
-
常见加密算法:
- DES
- AES(用来替代DES,基于DES)
-
特点:
- ①加密速度快
- ②密文是不可逆的(即:加密后的内容不能被反解析成明文)。密钥key不能泄露,否则会不安全
- ③如果在编码表上,找不到对应的字符,会出现乱码
- ④一般需要结合 Base64一起使用(因为加密后的字节数字中的字节可能是负数,编码表中没有负数对应的字符,所以就会显示乱码,为了不显示乱码,所以使用Base64进行一个转码)。
-
【注意】如果使用DES,则密钥key必须是8个字符。AES的密钥key是16个字符。
1.2 Java中使用对称加密
JDK提供了一个API Cipher
用来进行加密 和 解密。
2 Base64(编码算法)
base64 不是加密算法,而是可读性算法。
base64不是用来 保护我们的数据的,目的是为了 可读性。
base64是有64个字符组成:大写A~Z,小写a ~ z,数字0 ~ 9,+ 和 =。
base58一般用在比特币中,是比特币中的一种编码方式。
3 消息摘要算法(哈希函数)
-
消息摘要,又称为“数字摘要”,是 哈希函数 作用之后得到的结果,单向的,不可逆。
-
消息摘要 生成的值是不可以篡改的,为了保证文件或者值的安全。
-
可将任意长度的消息经过运算,变成固定长度数值,常见的有
MD5
、SHA-1
、SHA256
,多应用在文件校验,数字签名中。- MD5 可以将任意长度的原文生成一个128位(16字节)的哈希值
- SHA-1可以将任意长度的原文生成一个160位(20字节)的哈希值
常见算法 :
- MD5
- SHA1
- SHA256
- SHA512
4 非对称加密
- 非对称加密算法需要两个密钥:公钥和私钥,公钥和私钥是一对。
- 因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
特点:
- 加密和解密使用不同的密钥
- 如果使用私钥加密, 只能使用公钥解密
- 如果使用公钥加密, 只能使用私钥解密
- 处理数据的速度较慢, 因为安全级别高,一般大文件加密使用 对称加密。
常见算法:
- RSA
- ECC
5 数字签名
数字签名:也叫做公钥数字签名,只有信息的发送者才能产生别人无法伪造的一串数字串。