对称加密 简单来说就是加密和解密使用同一个秘钥。
A 与 B 之间通信之前,协商一个秘钥 secret, A要给B发送消息message ,实际发送加密后secretMessage =encrypt(message,secret)的加密文本。B接收到A发送的消息,使用decrypt(secretMessage,secret)。
该加密算法的优缺点有:
- 私钥如何发布。
- N²问题(100个人之间互相通信,密钥数100*99/2)
- 算法效率高。
非对称加密 加密和解密不是同一个秘钥。
非对称加密算法会生成两个秘钥,公开出去的那个秘钥称为pub key,需要保密私有的那个称为pri key。
A和B之前使用非对称加密通信:
A 生成pub key,和pri key,并将pub key公布出去,任何想跟我通信的都可以使用该key加密。自己保留pri key。
B 使用pub key将message加密
A 收到加密后的消息,使用pri key进行解密。
该算法优缺点有:
- pub key可以公开传输。
- 算法效率低于对称加密,信息越长,效率越低。
- 上例中A如果使用pri key加密消息发送给B,这时候由于A的pub key是公开的,所以任何持有pub key的都可以解密该消息,所以这时候B给A的加密消息相当于是公开的。这种不适合在发送加密消息,却适合另外一个场景的应用。即签名 :任何持有A的pub key的相关人员都可以解密A用pri key加密的消息,却不能用该pub key解密其它pri key加密的消息。所以可以用来确认该消息是不是A发出来的。
- 公钥发布被替换,修改问题。
不可抵赖性
签名没有办法解决不可抵赖性,B可以修改公私钥。