HTTPS 证书签名算法中带 RSA 加密的 SHA-256 是什么意思?

RSA 是非对称加密,SHA 是散列算法,两种算法一起使用是如何在https中发挥作用的?

阅读 11.6k
5 个回答

如楼主所说,RSA是非对称加密算法,SHA是散列算法。这两种算法在这里有不同的用途:

  • RSA算法:加密用的,主要用于HTTPS的握手阶段。出于性能考虑,客户端跟服务端实际传输数据时,并不会用RSA算法对传输的数据进行加密,而是采用对称加密。对称加密的密钥在握手阶段协商生成,RSA就是在这个过程中使用的。(细节不展开)

  • SHA散列算法:证书防伪用。为了防止证书传输过程中,用户的公钥被篡改,证书在生成时,会将该证书对应的公钥等信息,通过SHA进行摘要运算(得到A),同时用CA的私钥进行加密,生成电子签名(得到B)。客户端拿到证书后,首先用CA的公钥解开电子签名,得到摘要A,然后利用SHA对该证书上的公钥等信息进行摘要运算(跟前面一样),得到摘要C。对比证摘要A、摘要C,如果A==C,那么证书没有被篡改过。

楼主应该比较关心的是SHA在这里的作用,如上所示。

此外,数字证书上其实带了两对 加密算法/摘要算法,一对是用来证明证书本身的合法性,一对用来证明公钥的合法性。

实际上https有三种加密算法

  1. 非对称加密:加密对称加密的随机密码

  2. 对称加密: 正常数据的加密

  3. 散列算法:保证数据的完整性

我参考了这个

对散列签名。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题