无法解码有效的 Base64 字符串

Valid Base64 string can't be decoded

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

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

它抛出异常..

异常消息:

"The input is not a valid Base-64 string as it contains a non-base 64 character, more than two padding characters, or an illegal character among the padding characters."

为什么会这样?

您本可以检查 validator

这个有效:

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

由于 Base64 字符串将每个字节 6 位映射为 8 位,因此每 3 个字节(24 位)变为 4 个字节。 Base64 字符串长度必须能被 4 整除,如果没有那么多的 = 字符被添加到它的末尾(这实际上不是它的内容的一部分)使长度能被 4 整除。

由于您的 Base64 字符串长度已经被 4 整除,因此不需要额外的 = 个字符。