digital-signature - 带有数字签名的混合加密,下面提到的流程是否正确?
问题描述
在混合加密中,同时使用非对称和对称加密。非对称加密用于对称密钥交换(用于加密),因为非对称密钥算法复杂且消耗大量资源。
在发件人端:
- 当发送方发出 HTTP GET 请求时,接收方显示 CA 签署的 SSL 证书,该证书持有公钥
- 现在发送者拥有接收者的公钥
- 在发送端消息摘要是通过对消息应用哈希函数来计算的
- 数字签名是通过将发送者的私钥应用于消息摘要来计算的。所以现在我们有了一个数字签名,它可以验证发送者的真实性和不可否认性,因为它是使用私钥生成的
- 发送者将与接收者共享他的公钥,以在接收者端解密数字签名
- 正如我们在这里讨论的混合加密,发送方还将生成一个随机密钥(会话/主/对称密钥)用于实际加密
- 发送者用接收者的公钥加密所有数据(数字签名/消息/秘密密钥/发送者的公钥)并与接收者共享
在接收端:
- 现在接收者拥有加密数据(发送者的数字签名/消息/密钥/公钥),他使用自己的私钥解密
- 接收方通过应用发送方的公钥计算消息摘要
- 接收方对消息应用哈希函数并计算消息摘要。如果第 2 步和第 3 步的输出都匹配,则验证发件人的真实性
- 接收方现在拥有由发送方提供的共享密钥,该密钥现在可用于对双方共享的进一步数据进行对称加密
现在你能告诉我它是否是这样工作的吗?此外,接收者如何知道应用哪种哈希算法来获取消息摘要?
解决方案
推荐阅读
- r - 在 r 中使用 ggplot2 创建散点图,其中包含所有点但点的 1 条回归线通过分组变量进行区分
- terraform-provider-azure - 在创建资源之前创建服务原则
- linq - 无法使用 MVC 核心中的影子属性翻译 LINQ 表达式
- java - Checkstyle 说“可以删除条件逻辑”?
- angular - Angular 6导航上的量角器超时
- git - 如何在 GitHub 主仓库中获取新文件
- recursion - GnuCOBOL:尝试创建递归用户定义函数
- environment-variables - Fluentd 环境变量未在进程中提取
- java - Spring Boot - Jersey 客户端 - Jackson 无法构造“java.time.Instant”的实例
- postgresql - 在 queryDSL 中使用 postgresql 数组覆盖运算符的语法