简介

非对称加密算法是密码学的一种算法,它需要两个密钥,一个是公开密钥(简称为:公钥),另一个是私有密钥(简称为:私钥);一个用作加密,另一个则用作解密。

使用其中一个密钥把明文加密后所得的密文,只能用相对应的另一个密钥才能解密得到原本的明文;甚至连最初用来加密的密钥也不能用作解密。

由于加密和解密需要两个不同的密钥,故被称为非对称加密;不同于加密和解密都使用同一个密钥的对称加密。

虽然两个密钥在数学上相关,但如果知道了其中一个,并不能凭此计算出另一个;因此其中一个可以公开,称为公钥,任意向外发布;不公开的密钥称为私钥,必须由用户自行严格秘密保管,绝不透过任何途径向任何人提供,也不会透露给被信任的要通信的另一方。

非对称加密的应用场景

非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。

非对称加密主要应用于两个场景:数据加密和签名

加密和签名的区别


加密和签名都是为了安全性考虑,但有所不同。加密是为了防止信息被泄露,签名是为了防止信息被篡改。

加密过程


1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。
2)A传递自己的公钥给B,B使用A的公钥对消息进行加密。
3)A接收到B加密的消息,利用A自己的私钥对消息进行解密。

整个过程中,只用A的私钥才能对消息进行解密,防止消息被泄露。

签名过程


1)A生成一对密钥(公钥和私钥),私钥不公开,A自己保留。公钥为公开的,任何人可以获取。
2)A用自己的私钥对消息进行加签,形成签名,并将签名和消息本身一起传递给B。
3)B收到消息后,通过A的公钥进行验签,如果验签成功,则证明消息是A发送的。

整个过程,只有使用A私钥签名的消息才能被验签成功。即使知道了消息内容,也无法伪造签名,防止消息被篡改。