编码、加密、Hash、序列化

密码学

一种优秀的对称加密算法的标准是,让破解者找不到比穷举法(暴⼒破解法)更有效的破解手段,并
且穷举法的破解时间⾜够长(例如数千年)。

对称加密

算法:DES(56 位密钥,密钥太短⽽逐渐被弃用)、AES(128 位、192 位、256 位密钥,现在最流⾏)

优点:速度快,方式简单。
缺点:密钥泄露:不能在不安全网络上传输密钥,⼀旦密钥泄露则加密通信失败。
破解方法:设法找到⼀个密钥,这个密钥可以将这些原文-密文对中的原文加密为密文,以及将密文解密为 原文的组合,即为成功破解。

非对称加密

使用非对称加密通信,可以在不可信⽹络上将双⽅的公钥传给对方,然后在发消息前分别对消息使用
对方的公钥来加密和使⽤自己的私钥来签名,做到不可信网络上的可靠密钥传播及加密通信。

算法:RSA、DSA。

优点:可以在不安全网络上传输密钥。
缺点:计算复杂,因此性能相比对称加密差很多。
破解方法:穷举法,只是和对称加密破解的区别在于,对称加密破解是不断尝试⼰己的新密 钥是否可以将⾃己拿到的原⽂-密文对进行加密和解密,⽽而⾮对称加密时不断尝试⾃己的新私钥 是否和公钥互相可解。

数字签名

加密 + 签名可以防止数据伪造和中间人攻击。

混合加密

加密过程:

解密过程:

Base64

将原数据每 6 位对应成 Base 64 索引表中的⼀个字符编排成⼀个字符串。(二进制数据转为字符串)

应用:Base64对图⽚进行编码,使⽤文本形式来传输图片。

Base64 并不是加密,另外,Base64 会导致数据增⼤ 1/3,降低⽹网络性能,增⼤用户流量
开销。

Hash

把任意数据转换成指定⼤小范围(通常很小,例如 256 字节以内)的数据。

作用:相当于从数据中提出摘要信息,因此最主要⽤用途是数字指纹。

用途:数据完整性验证,快速检索(HashMap)、隐私保护(密码hash存储)

算法: MD5、SHA1。

序列化

把数据对象(⼀般是内存中的,例例如 JVM 中的对象)转换成字节序列的过程。

作用:让内存中的对象可以被储存和传输。

字符集

0%