0、加密与哈希
哈希函数的特点:不可逆、长度固定、值唯一
哈希函数 h 将一条信息 P 映射到一个固定长度的值 x = h(P),称为 P 的散列值或摘要。它保证了 x 的完整性。
也就是说哈希的输入可以任意长度,但输出是固定长度。比如SHA256 哈希函数,输入任何值出来的都是256比特的0和1。
加密与哈希最直观的区别就是加密是可逆的,而哈希是不可逆的。
1、凯撒密码 Caesar Cipher
凯撒密码通过修改字母的偏移量进行通信,比如所有字母左移5位形成一个新的字母映射关系。
2、对称加密
加密和解密使用相同的密钥
对称加密示例
假设我们现在有一段文本 10001100101
需要加密,我们使用异或运算符(XOR)进行加密,给定的KEY 为 10101010101
。那么加密过程如下
同样的,将上述加密后的信息与key进行异或运算后即可解码。
3、非对称加密
加密和解密使用不同的密钥;
同时每个用户都有一对密钥:分别是私钥和公钥。
发送者用接收者的公钥加密传输时,接受者则使用他的私钥进行解密;当发送者使用私钥进行加密传输时,接受者则使用发送方的公钥进行解密。如下图所示。
一个更直观的图如下所示。
使用公钥进行加密。Bob想给Alice发消息,便从他的公钥环中取出Alice的公钥,使用公钥将信息加密后发给Alice,Alice接受到消息后,则用自己的私钥将信息解密即可。
使用私钥进行加密。Bob想给Alice发消息使用私钥将信息加密后发给Alice,Alice接受到消息后,则从自己的公钥环中取出Bob的私钥解密即可。
Bob想给Alice发消息,便从他的公钥环中取出Alice的公钥,使用公钥将信息加密后发给Alice,Alice接受到消息后,则用自己的私钥将信息解密即可。
一个具体的例子如下
3.1 非对称加密技术的应用:数字签名
基于非对称加密技术,数字签名是其最普遍的应用场景。它保证了发送消息的完整性、源认证和不可否认性。
4、Diffie-Hellman 密钥交换协议
对称加密技术术需要在每对通信放之间共享密钥,所有这些密码是如何做到共享的呢,也就是用同一个密钥去加密和解密信息。于是就有了我们现在要讲的Diffie-Hellman协议
其目的是使两个用户能够安全地交换一个密钥,然后可以
用于后续消息的对称加密
• 算法本身仅限于秘密值的交换
• 其有效性取决于计算离散对数的难度。
我们看下算法的原理。首页Alice(以下简称A)和Bob(以下简称B)共同选定一个质数q,以及质数的源根α。
之后 A 选择一个自然数 Xa,计算出 Ya,其中Xa 保密,Ya 公开。
同理,B 选择 Xb 并计算出 Yb,其中 Xb 保密,Yb 公开。之后 A 用 Yb 和 Xa 计算出密钥 K,而 B 用 Ya 和 Xb 计算密钥 K。
完整流程如下: