无法解码有效的 Base64 字符串



我有一个有效的base64字符串,我可以在在线工具中对其进行解码,但当它到达下面的行时;

string token = "eyJ1bmlxdWVfbmFtZSI6InllbmVyLnlpbG1hekB5ZHlhemlsaW0uY29tIiwiZ2l2ZW5fbmFtZSI6Ik1laG1ldCBZZW5lciIsImZhbWlseV9uYW1lIjoiWUlMTUFaIiwiZW1haWwiOiJ5ZW5lci55aWxtYXpAeWR5YXppbGltLmNvbSIsInJvbGUiOiJBZG1pbiIsIm5iZiI6MTU4NTI0OTI1NCwiZXhwIjoxNTg1ODU0MDU0LCJpYXQiOjE1ODUyNDkyNTR9==";
try
{
var asd = Convert.FromBase64String(token);
}
catch (Exception ex)
{
throw;
}

它抛出异常。。

异常消息:

"输入不是有效的Base-64字符串,因为它包含非Base-64字符、两个以上的填充字符或非法字符在填充字符中。">

为什么会发生这种情况?

As Base64字符串将每个字节6位映射为8位,因此每个3字节(24位(变为4个字节。Base64字符串长度必须可整除为4,如果没有在其末尾添加所需的=字符(这实际上不是其内容的一部分(以使长度可整除至4。

由于Base64字符串长度已经可以除以4,因此不需要额外的=字符。

您本可以检查验证器。

这项工作:

string s  = "eyJ1bmlxdWVfbmFtZSI6InllbmVyLnlpbG1hekB5ZHlhemlsaW0uY29tIiwiZ2l2ZW5fbmFtZSI6Ik1laG1ldCBZZW5lciIsImZhbWlseV9uYW1lIjoiWUlMTUFaIiwiZW1haWwiOiJ5ZW5lci55aWxtYXpAeWR5YXppbGltLmNvbSIsInJvbGUiOiJBZG1pbiIsIm5iZiI6MTU4NTI0OTI1NCwiZXhwIjoxNTg1ODU0MDU0LCJpYXQiOjE1ODUyNDkyNTR9";
var c = Convert.FromBase64String(s);
Console.WriteLine(System.Text.ASCIIEncoding.ASCII.GetString(c));

最新更新