RSA加密解密和签名验证机制以及其区别和联系

RSA加密解密和签名验证机制以及其区别和联系

文章目录

    • RSA加密解密和签名验证机制以及其区别和联系
    • 1. RSA的加密解密机制原理
    • 2. RSA的签名认证机制原理
    • 3. RSA加密解密机制和签名认证机制的区别和联系
    • 4. 非对称加密算法(如RSA)正确的使用方法是:

1. RSA的加密解密机制原理

​ RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。
​ 从算法描述中我们也可以看出:公钥用于对数据进行加密,私钥用于对数据进行解密。当然了,这个也可以很直观的理解:公钥就是公开的密钥,其公开了大家才能用它来加密数据。私钥是私有的密钥,谁有这个密钥才能够解密密文。否则大家都能看到私钥,就都能解密,那不就乱套了。

2. RSA的签名认证机制原理

​ 签名体制同样包含3个算法:KeyGen(密钥生成算法),Sign(签名算法),Verify(验证算法)。其中秘钥生成算法和RSA加密解密中的秘钥生成算法是一样的。

​ 对于签名和认证的M,可以是原始的信息的报文摘要。在https中,CA对也是对证书的某些信息的报文摘要进行签名的。
所以,在签名算法中,私钥用于对数据进行签名,公钥用于对签名进行验证。这也可以直观地进行理解:对一个文件签名,当然要用私钥,因为我们希望只有自己才能完成签字。验证过程当然希望所有人都能够执行,大家看到签名都能通过验证证明确实是我自己签的。

3. RSA加密解密机制和签名认证机制的区别和联系

​ 假设RSA加密解密系统中,将加密函数称为E,将解码函数称为D。在加密过程中,我们使用公钥PK和E函数,将报文加密,然后在对端使用私钥SK和D函数将密文解密,得到原始的报文。
​ 而在签名认证的过程中,我们使用私钥SK和D函数进行报文的签名,然后在对端使用公钥PK和E函数进行认证。注意的是,这里的D和E和上面的D和E函数是一样的。
​ 因为,在RSA加密系统中,以任意顺序 应用D和E函数时,两者都会相互抵消。因此E(D(stuff))=stuff,就像D(E(stuff))=stuff一样。只是习惯上,E和D在加密过程中,称为加密函数和解码函数;而在签名认证过程中,称为签名函数和认证函数,其实是一样的。

4. 非对称加密算法(如RSA)正确的使用方法是:

  1. 公钥加密,私钥解密。

  2. 私钥签名,公钥验签。

既然是加密,那肯定是不希望别人知道我的消息,所以只有我才能解密,所以可得出公钥负责加密,私钥负责解密

同理,既然是签名,那肯定是不希望有人冒充我发消息,只有我才能发布这个签名,所以可得出私钥负责签名,公钥负责验证

你可能感兴趣的:(Python,python)