加密

一、古典密码学
 
  • 替换式加密:
按规则使⽤不同的⽂字来替换掉原先的⽂字来进⾏加密。
码表:
原始字符:ABCDEFGHIJKLMNOPQRSTUVWXYZ
密码字符:BCDEFGHIJKLMNOPQRSTUVWXYZA
原始书信:I love you
加密书信:J mpwf zpv
解读后:I love you
加密算法:替换⽂字
密钥:替换的码表
特性:只能加密文字

二、现代密码学

  • 对称加密
通信双⽅使⽤同⼀个密钥,使⽤加密算法配合上密钥来加密。使用加密的密钥来解密。
破解:如果是公开的加密算法,破解者可以逆向用不同的密钥来加密,如果加密内容和想要破解的加密内容一致,则代表密钥正确,该方法为暴力破解。

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

对称加密作⽤:
加密通信,防⽌信息在不安全⽹络上被截获后,信息被⼈读取或篡改。

对称加密(如 AES)的破解:
拿到⼀组或多组原⽂-密⽂对
设法找到⼀个密钥,这个密钥可以将这些原⽂-密⽂对中的原⽂加密为密⽂,以
及将密⽂解密为原⽂的组合,即为成功破解

反破解:
⼀种优秀的对称加密算法的标准是,让破解者找不到⽐穷举法(暴⼒破解法)更有效的破解⼿段,并且穷举法的破解时间⾜够⻓(例如加盐,在得到密文以后额外再添加一些新的东西)。

对称加密的缺点:
密钥泄露:不能在不安全⽹络上传输密钥,⼀旦密钥泄露则加密通信失败。
  • ⾮对称加密
原理:使⽤公钥对数据进⾏加密得到密⽂;使⽤私钥对数据进⾏解密得到原数据。
⾮对称加密使⽤的是复杂的数学技巧,在古典密码学中没有对应的原型。

使⽤⾮对称加密通信,可以在不可信⽹络上将双⽅的公钥传给对⽅,然后在发消息前分别对消息使⽤对⽅的公钥来加密和使⽤⾃⼰的私钥来签名,由于私钥和公钥互相可解,因此⾮对称加密还可以应⽤于数字签名技术。

签名:通常会对原数据 hash 以后对 hash 签名,然后附加在原数据的后⾯作为签名。之所以hash以后再签名,这是为了让签名数据更⼩。

经典算法:
RSA(可⽤于加密和签名)、DSA(仅⽤于签名,但速度更快)

非对称加密流程:
客户端持有公钥私钥
服务器持有公钥私钥
客户端:
1· 把原数据(未加密时的数据)先hash,之后再用私钥进行加密,加密后的密文就代表原数据的签名
2· 把原数据用公钥进行加密
3· 把签名和公钥加密后的密文,一起发送给服务器
服务器:
1· 把得到的签名用公钥进行解密,得到原数据的hash值
2· 把密文用私钥进行解密,得到原数据,并对原数据hash
3· 比对原数据的hash值是否和解密后的签名一致,如果一致代表正确,不一致代表错误

⾮对称加密的优缺点:
优点:可以在不安全⽹络上传输密钥
缺点:计算复杂,因此性能相⽐对称加密差很多,⼀旦私钥泄露则加密通信失败。

⾮对称加密(如 RSA、ECDSA)的破解:
暴力破解法,用得到的公钥加密一份数据,然后不断尝试⾃⼰的新私钥是否能解开密文。

反破解:
和对称加密⼀样,⾮对称加密算法优秀的标准同样在于,让破解者找不到⽐穷举法更有效的破解⼿段,并且让穷举法的破解时间⾜够⻓。(例如加盐,在得到密文以后额外再添加一些新的东西)

 

Hash:

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

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

Hash 的实际⽤途:
1· 唯⼀性验证
2· 数据完整性验证
从⽹络上下载⽂件后,通过⽐对⽂件的 Hash 值(例如 MD5、SHA1),可以确认下载的⽂件是否有损坏。如果下载的⽂件 Hash 值和⽂件提供⽅给出的 Hash 值⼀致,则证明下载的⽂件是完好⽆损的。
3· 快速查找
HashMap
4· 隐私保护
当重要数据必须暴露的时候,有时可以选择暴露它的 Hash 值(例如 MD5),以保障原数据的安全。例如⽹站登录时,可以只保存⽤户密码的 Hash 值,在每次登录验证时只需要将输⼊的密码的 Hash 值和数据库中保存的 Hash 值作⽐对就好,⽹站⽆需知道⽤户的密码。这样,当⽹站数据失窃时,⽤户不会因为⾃⼰的密码被盗导致其他⽹站的安全也受到威胁。

Hash 是编码吗?
不是。 Hash 是单向过程,往往是不可逆的,⽆法进⾏逆向恢复操作,因此 Hash 不属于编码。

Hash 是加密吗?
不是。Hash 是单向过程,⽆法进⾏逆向恢复操作,因此 Hash 不属于加密。(记住,MD5 不是加密!)

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页