encryption - 数字签名:我们为什么需要它?
问题描述
我不明白一些可能非常微不足道但对我来说仍然没有意义的东西,如果可以用公钥解密,为什么我们需要数字签名。根据这篇文章https://www.instantssl.com/https-tutorials/digital-signature.htmlAlice 写了一条消息,然后使用 pk 对消息进行散列和加密。加密的消息被发送过来,Bob 仅使用 Alice 的公钥对其进行解密。他们比较了哈希值等等......我明白除了一步之外的一切:如果鲍勃只能用一个公钥解密消息,那如何防止消息被其他人解密,如果这不是重点对于数字签名(加密),我们为什么还要费心加密消息的哈希值。bob 不能简单地运行接收到的消息的哈希值并将其与 alice 发送给他的哈希值进行比较吗?
解决方案
加密和数字签名服务于两个截然不同的目的。你让他们感到困惑。
我们散列消息,用我们的私钥加密散列,然后将明文消息和加密的散列发送给我们的收件人。
我们的接收者使用我们的公钥解密散列,自己散列明文消息,并比较两个散列。
如果哈希值匹配,接收者就可以知道消息确实来自我们(或者,至少来自拥有私钥的人)。
推荐阅读
- firebase - 如何在 Firebase 实时数据库中保存 LocalData?
- python - 在保存之前访问 ManyToManyField 的 through Model 的字段
- bootstrapvalidator - 如何使用引导验证器验证动态生成的字段。`错误无法读取未定义的属性'应用'`
- c# - SignalR - 更改服务器超时响应
- python - 更改 AJAX 页面中的下拉值后,Python Selenium Webdriver 不刷新 html
- javascript - 使用 jQuery 为 WPForms 隐藏/条件字段设置动画
- asp.net - NSwag - 使用 .NET Framework Global.asax 设置修改主机、方案等
- networking - hyper-v VM 上的 minikube 无法 ping Windows 10 主机
- generics - 有没有办法使用泛型类型别名作为 Rust 中函数的泛型类型
- macos - CTFontManagerRegister... 用于第 3 方应用