密码学
一种优秀的对称加密算法的标准是,让破解者找不到比穷举法(暴⼒破解法)更有效的破解手段,并
且穷举法的破解时间⾜够长(例如数千年)。
对称加密
算法:DES(56 位密钥,密钥太短⽽逐渐被弃用)、AES(128 位、192 位、256 位密钥,现在最流⾏)
优点:速度快,方式简单。
缺点:密钥泄露:不能在不安全网络上传输密钥,⼀旦密钥泄露则加密通信失败。
破解方法:设法找到⼀个密钥,这个密钥可以将这些原文-密文对中的原文加密为密文,以及将密文解密为 原文的组合,即为成功破解。
非对称加密
使用非对称加密通信,可以在不可信⽹络上将双⽅的公钥传给对方,然后在发消息前分别对消息使用
对方的公钥来加密和使⽤自己的私钥来签名,做到不可信网络上的可靠密钥传播及加密通信。
算法:RSA、DSA。
优点:可以在不安全网络上传输密钥。
缺点:计算复杂,因此性能相比对称加密差很多。
破解方法:穷举法,只是和对称加密破解的区别在于,对称加密破解是不断尝试⼰己的新密 钥是否可以将⾃己拿到的原⽂-密文对进行加密和解密,⽽而⾮对称加密时不断尝试⾃己的新私钥 是否和公钥互相可解。
数字签名
加密 + 签名可以防止数据伪造和中间人攻击。
混合加密
加密过程:
解密过程:
Base64
将原数据每 6 位对应成 Base 64 索引表中的⼀个字符编排成⼀个字符串。(二进制数据转为字符串)
应用:Base64对图⽚进行编码,使⽤文本形式来传输图片。
Base64 并不是加密,另外,Base64 会导致数据增⼤ 1/3,降低⽹网络性能,增⼤用户流量
开销。
Hash
把任意数据转换成指定⼤小范围(通常很小,例如 256 字节以内)的数据。
作用:相当于从数据中提出摘要信息,因此最主要⽤用途是数字指纹。
用途:数据完整性验证,快速检索(HashMap)、隐私保护(密码hash存储)
算法: MD5、SHA1。
序列化
把数据对象(⼀般是内存中的,例例如 JVM 中的对象)转换成字节序列的过程。
作用:让内存中的对象可以被储存和传输。