首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >非对称密码学与JWT

非对称密码学与JWT
EN

Stack Overflow用户
提问于 2017-02-08 16:26:58
回答 1查看 744关注 0票数 1

我试图了解JWT是如何在我正在审查的代码库中实现的。我读过

然而,在这个代码库中,客户端似乎拥有私钥和公钥.它拥有服务器的公钥和自己的私钥(我假设服务器有相应的私钥)。为什么有这个必要?客户端不应该只需要公钥而服务器只需要私钥吗?如果客户端正在加密一条消息,难道它不能使用公钥来加密它,而服务器只需要私钥来解密它吗?相反,它不能用它的公钥解密来自服务器的加密消息吗?为什么客户端需要两套公钥和私钥?

从阅读中看:

要创建数字签名,签名软件(如电子邮件程序)将创建要签名的电子数据的单向散列。然后使用用户的私钥加密哈希,返回哈希数据特有的值。加密哈希和其他信息(如散列算法)形成数字签名。数据中的任何更改,即使是单个比特,都会导致不同的哈希值。此属性使其他人能够通过使用签名者的公钥解密哈希来验证数据的完整性。如果解密后的哈希匹配同一数据的第二个计算哈希,则证明数据自签名以来没有更改。

  1. 哈希数据和加密数据之间有什么区别?你为什么要先把它弄碎?哈希数据加密了吗?
  2. 这个分段计算散列是从哪里来的?如果解密者试图将公钥应用于加密数据.它怎么知道它成功了?它与之相比是什么呢?比较散列从何而来?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-08 19:50:19

JWT使用发送方的私钥签名(而不是加密)。jWT内容可以选择使用JWE加密。

对称密钥用于签名和验证。使用非对称密钥对,消息将使用私钥签名,并与公共验证。

数字签名保护消息免遭更改,并识别发送方。非对称密钥允许接收方使用发送方的公钥验证签名,而不损害私钥

JWT签名可以根据目的在客户端或服务器端使用。例如,在身份验证流中

  • 客户端:API请求,其中服务器验证注册过程中上传的公钥签名。
  • 服务器端:在显示凭据后向最终用户发出令牌

在内部,数字签名涉及多个加密操作、消化消息、加密哈希和添加算法标识符。但是您不必担心这一点,因为所有编程语言​​都支持它。

我试图以一般的方式解释JWT&数字签名,而不是回答您的具体问题。我可能留下了一些。请评论

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42118497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档