无法解码有效的 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 整除,因此不需要额外的 =
个字符。
我有一个有效的 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 整除,因此不需要额外的 =
个字符。