c#获取对象的唯一标识_C#签名算法HS256和RS256实战演练

21bf32fe7481420aab94ba1b5fe1be69.png

一、RS256和HS256的区别  

HS256 使用密钥生成固定的签名,RS256 使用成非对称进行签名。
简单地说,HS256 必须与任何想要验证 JWT的 客户端或 API 共享秘密。 RS256 生成非对称签名,这意味着必须使用私钥来签签名 JWT,并且必须使用对应的公钥来验证签名。与对称算法不同,使用 RS256 可以保证服务端是 JWT 的签名者,因为服务端是唯一拥有私钥的一方。这样做将不再需要在许多应用程序之间共享私钥。 

二、JWT常用的两种签名算法 

JWT签名算法中,一般有两个选择,一个采用HS256,另外一个就是采用RS256。

签名实际上是一个加密的过程,生成一段标识(也是JWT的一部分)作为接收方验证信息是否被篡改的依据。

RS256 (采用SHA-256 的 RSA 签名) 是一种非对称算法, 它使用公共/私钥对: 标识提供方采用私钥生成签名, JWT 的使用方获取公钥以验证签名。由于公钥 (与私钥相比) 不需要保护, 因此大多数标识提供方使其易于使用方获取和使用 (通常通过一个元数据URL)。

另一方面, HS256 (带有 SHA-256 的 HMAC 是一种对称算法, 双方之间仅共享一个 密钥。由于使用相同的密钥生成签名和验证签名, 因此必须注意确保密钥不被泄密。

在开发应用的时候启用JWT,使用RS256更加安全,你可以控制谁能使用什么类型的密钥。另外,如果你无法控制客户端,无法做到密钥的完全保密,RS256会是个更佳的选择,JWT的使用方只需要知道公钥。

由于公钥通常可以从元数据URL节点获得,因此可以对客户端进行进行编程以自动检索公钥。如果采用这种方式,从服务器上直接下载公钥信息,可以有效的减少配置信息。

三、JWT介绍

JWT 代表 JSON Web Token ,它是一种用于认证头部的 token 格式。这个 token 帮你实现了在两个系统之间以一种安全的方式传递信息。出于教学目的,我们暂且把 JWT 作为“不记名 token”。一个不记名 token 包含了三部分:header,payload,signature。

header 是 token 的一部分,用来存放 token 的类型和编码方式,通常是使用 base-64 编码。

payload 包含了信息。你可以存放任一种信息,比如用户信息,产品信息等。它们都是使用 base-64 编码方式进行存储。

signature 包括了 header,payload 和密钥的混合体。密钥必须安全地保存储在服务端。

你可以在下面看到 JWT 刚要和一个实例 token:

b008760ed90fbd27281a20830b22365e.png

四、HS256和RS256实战演练

一、HS256使用:

根据指定用户生成Token

10eb7829d5010bdc5dc3798c9c06cdd8.png

验证指定用户的Token是否有效

ec5f357b1d71fe1abbb8e3ec4ac6fddf.png

二、HS256使用: 

生成一个rsa非对称密钥对。

8059b758382ec17bb56fec5c69166002.png

私钥加密,公钥验签。

535868c353a07691ed89c468e2f22346.png

五、源代码示例下载

非常感谢对【跟着阿笨一起玩NET】的支持,有问题微信公众号回复wx关键字,加阿笨的个人微信号。

《C#签名算法HS256和RS256实战演练》源码下载(注意下载地址区分大小写哦)

链接:https://pan.baidu.com/s/100fZP6bVH8J16crtnwEq6g
提取码:8ks5  

19169803e5da31986151ecb095c34f72.png

6c2c1644bddf8843520204057525a7f3.png

腾讯课堂

ce7c993680680586569f564ceaeb7fc0.png

网易云课堂

f7b50269b01ef1df7ba57394621cfe3d.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值