微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何生成与JWT.IO网站相同的签名?

JWT.IO网站有一个用于创建和验证JSON Web令牌的调试器.

当我将我的秘密字符串复制并粘贴到VERIFY SIGNATURE块中时,我可以看到它生成一个签名.

JWT.IO

我向下滚动页面一点,找到the .NET solution implemented by Microsoft.下载后,我添加单元测试以手动生成签名.

Unit Test

但是,JWT.IO网站生成的签名与我的单元测试生成的签名略有不同.

Secrect string: "THIS IS A SECRET STRING WHICH CAN BE SHARED BETWEEN THE SERVICES"
Unit test signature: "B0d57pcHoDiTDE/98dyrMx9HoFKGLOcM094eYBgJqHo="
JWT.IO    signature:  B0d57pcHoDiTDE_98dyrMx9HoFKGLOcM094eYBgJqHo

我注意到JWT.IO签名字符串是URL编码安全的,但单元测试签名不是.

如何生成与JWT.IO网站相同的签名?

UPDATE

下面接受的答案将我指向the class Base64UrlEncoder.我修改了我的单元测试以生成与JWT.IO网站完全相同的签名:

Use Base64UrlEncoder

解决方法:

@ Believe2014似乎jwt.io网站没有一些选项来指定base64编码,使用哪种URLEncoding生成与单元测试相同的签名.

但是,根据第4节&在RFC 4648的第5版中,两个签名之间的差异对于字节62和62使用不同的字符. 63是否省略填充字符=.

因此,为了将jwt.io生成的签名转换为你的签名,只需使用/而不是_,使用而不是 – ,并在签名结束时添加填充符=.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐