记事本++中的JWT Base64解码失败 [英] JWT Base64 Decode failed in Notepad++

查看:22
本文介绍了记事本++中的JWT Base64解码失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Notepad++中,我在解码JWT时遇到问题。当我尝试将Plugins -> MIME Tools -> Base64 Decode与:

一起使用时

eyJleHAiOjE0NDIzNjAwMzQsIm5iZiI6MTQ0MjM1NjQzNCwidmVyIjoiMS4wIiwiaXNzIjoiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tLzc3NTUyN2ZmLTlhMzctNDMwNy04YjNkLWNjMzExZjU4ZDkyNS92Mi4wLyIsImFjciI6ImIyY18xX3NpZ25faW5fc3RvY2siLCJzdWIiOiJOb3Qgc3VwcG9ydGVkIGN1cnJlbnRseS4gVXNlIG9pZCBjbGFpbS4iLCJhdWQiOiI5MGMwZmU2My1iY2YyLTQ0ZDUtOGZiNy1iOGJiYzBiMjlkYzYiLCJpYXQiOjE0NDIzNTY0MzQsImF1dGhfdGltZSI6MTQ0MjM1NjQzNCwiaWRwIjoiZmFjZWJvb2suY29tIn0

我得到:

要解码的选定文本(不包括EOL)的长度无效。 应该是mod 4。

但如果使用www.base64decode.org则工作正常:

{"exp":1442360034,"nbf":1442356434,"ver":"1.0","iss":"https://login.microsoftonline.com/775527ff-9a37-4307-8b3d-cc311f58d925/v2.0/","acr":"b2c_1_sign_in_stock","sub":"暂时不支持,使用OID Claim.","aud":"90c0fe63-bcf2-44d5-8fb7-b8bbc0b29dc6","iat":1442356434,

为什么?我是否错误地使用记事本++?


我使用的值来自Azure AD B2C: Token reference


更新2020/01/28

我刚刚尝试了上面的JWT,Plugins -> MIME Tools -> Base64 Decode现在可以处理这个用例了,🎉。我使用的是该插件的2.5版。我猜v2.2 "fixed" this

NPP MIME工具v2.2版本
DONHO于2018年11月28日发布此消息
增强Base64:无需填充即可解码/编码

推荐答案

简答:

要使字符串可解码,您必须使编码字符串中的字符数成为4的整数倍。这意味着您必须将字符数除以4,而不是余数。在本例中,您有443个字符。在末尾添加=将使其可解码。

详细回答:

Base64编码使用一种称为填充的东西。输出中的字符数必须是4的整数倍。如果实际输出不满足该要求,编码算法将向输出添加额外的填充字符。填充字符通常为=

Wikipedia上有一些有关此操作的示例。您还可以看到thisSO POST。

"普通"base64url编码与JWT使用的base64url编码不同:jwt跳过填充字符。它们根本没有被添加。因此,JWT的任何解码算法都必须考虑到这一事实。

普通Base64解码器不允许没有填充的编码字符串作为输入(如果需要填充)。大多数解码器在解码算法开始时都有断言,其中它们检查输入字符串的长度,并检查长度%4=0。您可以从错误消息

中看到这一点
Length of selected text (not including EOL) to be decoded is invalid. It should be mod 4.

长度错误,因为缺少填充字符。

因此,使用处理无垫字符串的解码器是可行的。安德烈已经链接了一个网站。Here是另一个。

这篇关于记事本++中的JWT Base64解码失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆