RSA公私钥和签名、验签过程

RSA加密算法介绍

RSA又叫非对称加密算法,这类加密算法有2个秘钥,你可以选择一个作为私钥(自己保存,重要),另一个作为公钥(对外公开,谁都可以知道)。其中用私钥加密的内容只能用对应的公钥解密,同理用公钥加密的内容也只能用对应的私钥解密。

RSA加密过程

假设A生成了一对秘钥,私钥自己保存,公钥对外公开,且B获得了A的公钥。在A和B通信的过程中:
A向B发送信息:A用自己的私钥加密,B可以用其公钥解密;
B向A发送信息:B用(A给的)公钥加密数据,A可以用自己的私钥解密;
这样就保证了数据的安全传输;但是这中间存在问题,如果B向A发送数据的过程中被C拦截了,且C也获得了A的公钥,这样C就可以用公钥重新加密一份数据发送给A,这样就篡改了B发送给A的数据。为了辨别这种情况,就要说到数字签名的作用了。

私钥签名(公钥验签)

因为在数据传输过程中有可能被篡改,因此我们要使用数字签名技术来校验发送方的身份,并且事后发送方无法抵赖。这里还以A和B为例,来看下数字签名的主要过程:

  1. A向B发送信息时,用提前约定好的摘要(HASH)算法,从信息生成一个摘要,同时A用自己的私钥对这个摘要进行(RSA)加密,生成的加密摘要就叫做A的签名

  2. A把原始的信息外加签名S一块发送给B;

  3. B收到A发送的信息后,对原始信息采用相同的摘要算法,计算出一个本地摘要S1,接着B用公钥解密A发送过来的签名S,得到一个明文摘要S2(这一步其实就是验签的过程,能解出S2说明消息确实是A发出的),对比这个明文摘要S2和本地摘要S1,如果相同说明该信息未被篡改过。

参考文章

数字签名是什么?

你可能感兴趣的:(RSA公私钥和签名、验签过程)