相关疑难解决方法(0)

在URL中传递base64编码的字符串

通过GET参数传递原始base64编码字符串是否安全?

php string url base64 get

227
推荐指数
7
解决办法
27万
查看次数

从具有整数值的jwt有效负载解码编码的JSON字符串时,Convert.FromBase64string引发无效的Base-64异常

我正在编写一个函数来手动验证并获取jwt access_token的标头和有效负载对,我正在使用https://jwt.io/上提供的示例令牌进行测试,这时 我的代码非常简单

string[] tokenSegments = Token.Split('.');
string tokenHeaders = Encoding.UTF8.GetString(Convert.FromBase64String(tokenSegments[0]));
string tokenPayload = Encoding.UTF8.GetString(Convert.FromBase64String(tokenSegments[1]));
Run Code Online (Sandbox Code Playgroud)

当它到达tokenPayloadLine im时收到以下异常

System.FormatException:输入不是有效的Base-64字符串,因为它包含>一个非基本的64个字符,两个以上的填充字符或填充字符中的一个非法字符。在System.Convert.FromBase64CharPtr(Char * inputPtr,Int32 inputLength)在System.Convert.FromBase64String(String s)

并且在此级别抛出异常

Convert.FromBase64String(tokenSegments[1])
Run Code Online (Sandbox Code Playgroud)

请注意,我可以毫无例外地获取标头值

我尝试并编辑了令牌,以更改有效负载处可用的整数值以使其成为字符串,然后我成功获取了有效负载

只是比较,抛出异常的编码字符串是

eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
Run Code Online (Sandbox Code Playgroud)

工作正常的是

eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoiMTUxNjIzOTAyMiJ9
Run Code Online (Sandbox Code Playgroud)

如果将它们都解码,您会发现唯一的区别是导致异常的整数值

难道我做错了什么?这不是转换功能的预期用途吗?任何想法或建议也将有所帮助,请注意,我需要手动执行此操作,因为我完全了解在线提供的jwt库。

.net c#

2
推荐指数
1
解决办法
588
查看次数

标签 统计

.net ×1

base64 ×1

c# ×1

get ×1

php ×1

string ×1

url ×1