起源
最开始,密码学都是基于对称密钥,也就是发送者使用特定密钥加密信息,而接收者使用相同密钥解密。
这就造成了一个问题,如果需要和很多人进行通信,那么就要跟每个人都有一对密钥,保管很多不同的钥匙,非常难以管理。
RSA就诞生了,它是非对称加密,有不同的加密密钥与解密密钥。它原理是:根据数论,寻求两个大素数比较简单,而将它们的乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥
使用
有两种使用方式:
- 公钥加密、私钥解密
假设B有一对公钥私钥,公钥公开给所有人,A要给B发送一段信息,那么使用B的公钥加密这段信息,然后发送给B,那么B可以通过自己的私钥解密,也只有B有这个私钥。 - 私钥签名、公钥验签
假设A 有一对公私钥,公钥公开给所有人,A要给B发送消息,那么将消息签名使用自己的私钥加密,B收到消息,通过A的公钥解密,如果成功,那么证明该条消息是A发出的,因为只有A有这个私钥。
优劣:上面第一种场景虽然可以防止消息被窃取(因为只有A有私钥解密)但是无法防止恶意发送消息,因为无法验证是谁发的消息,第二种方法,可以验证发送消息来源,但却无法保证消息内容(因为谁都有B的公钥可以解密)。可以根据具体场景运用,或者混合使用。