繁体   English   中英

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

[英]How to generate the same signature as the JWT.IO website does?

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

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

JWT.IO

我向下滚动页面,发现Microsoft实现的.NET解决方案 下载后,我添加单元测试以手动生成签名。

单元测试

但是,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

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

使用Base64UrlEncoder

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

但是,根据RFC 4648的第4和第5节,两个签名之间的差异对于字节6263使用不同的字符以及是否省略填充字符=

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM