System.FormatException: 'Invalid length for a Base-64 char array or string.'
System.FormatException: 'Invalid length for a Base-64 char array or string.'
我在这里用头撞墙,这个简单的代码不起作用:
string middle = "eyJzdWIiOiJtYXR0d2ViZXIiLCJqdGkiOiJlMWVmNjc5Mi02YTBjLTQ4YWUtYmQzNi0wZDlmMTVlMDFiY2UiLCJpYXQiOjE0OTMwOTI0OTQsIm5iZiI6MTQ5MzA5MjQ5NCwiZXhwIjoxNDkzMjY1Mjk0LCJpc3MiOiJFQ29tbVdlYkFQSTIiLCJhdWQiOiJFQ29tbVdlYkNsaWVudDIifQ"
byte[] newBytes = Convert.FromBase64String(middle);
middle = Encoding.UTF8.GetString(newBytes);
就这么简单!然而我在标题中得到了错误。
此外,我 运行 在 https://www.base64decode.org/ 上使用它,它可以完美解码。
由于您提供的字符串不完全符合 FromBase64String
方法接受值的标准,您需要添加结束符号以遵循约定。它不会自动将结束符号添加到您的 string
.
The valueless character, "=", is used for trailing padding. The end of s can consist of zero, one, or two padding characters.
要解决您在 string
末尾添加 "=="
的问题。
例如:string middle = "SomeString=="
解决您面临的异常:
public static string Base64UrlDecode(this string base64)
{
string padded = base64.PadRight(base64.Length + (4 - base64.Length % 4) % 4, '=');
return Encoding.UTF8.GetString(Convert.FromBase64String(padded));
}
所有学分都转到此处接受的答案 Code for decoding/encoding a modified base64 URL。
我在这里用头撞墙,这个简单的代码不起作用:
string middle = "eyJzdWIiOiJtYXR0d2ViZXIiLCJqdGkiOiJlMWVmNjc5Mi02YTBjLTQ4YWUtYmQzNi0wZDlmMTVlMDFiY2UiLCJpYXQiOjE0OTMwOTI0OTQsIm5iZiI6MTQ5MzA5MjQ5NCwiZXhwIjoxNDkzMjY1Mjk0LCJpc3MiOiJFQ29tbVdlYkFQSTIiLCJhdWQiOiJFQ29tbVdlYkNsaWVudDIifQ"
byte[] newBytes = Convert.FromBase64String(middle);
middle = Encoding.UTF8.GetString(newBytes);
就这么简单!然而我在标题中得到了错误。
此外,我 运行 在 https://www.base64decode.org/ 上使用它,它可以完美解码。
由于您提供的字符串不完全符合 FromBase64String
方法接受值的标准,您需要添加结束符号以遵循约定。它不会自动将结束符号添加到您的 string
.
The valueless character, "=", is used for trailing padding. The end of s can consist of zero, one, or two padding characters.
要解决您在 string
末尾添加 "=="
的问题。
例如:string middle = "SomeString=="
解决您面临的异常:
public static string Base64UrlDecode(this string base64)
{
string padded = base64.PadRight(base64.Length + (4 - base64.Length % 4) % 4, '=');
return Encoding.UTF8.GetString(Convert.FromBase64String(padded));
}
所有学分都转到此处接受的答案 Code for decoding/encoding a modified base64 URL。