Convert.FromBase64String 给出错误“输入不是有效的 Base-64 字符串”

sal*_*azi 2 c# base64 character converters .net-6.0

这是我的字符串,我尝试将其从 base64 转换为人类可能可读的字符串:

eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9kYXRlb2ZiaXJ0aCI6IjIvMjUvMTk5MSAxMjowMDowMCBBTSIsIm5iZiI6MTY0MTQwNjk2MCwiZXhwIjoxNjQxNDEwNTYwLCJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3MDAwLyIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjcwMDAvIn0
Run Code Online (Sandbox Code Playgroud)

它适用于从 Base64 转换的在线网站,例如此网站

在 c# .net6 上我尝试以下代码:

var bytes = Convert.FromBase64String(base64payload);
Run Code Online (Sandbox Code Playgroud)

其中 base64payload 是上面的字符串。为什么我在 c# dotnet 6 上收到此错误?

"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."
Run Code Online (Sandbox Code Playgroud)

据我所知,( az AZ 0-9 / +)是有效的,我的眼睛在这个字符串中没有看到任何错误的base64字符+它在其他地方也有效。

ojo*_*ima 5

你的字符串缺少一些填充。您可以在这里检查并修复它(如果您愿意)。

修复后的正确字符串是:

eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9kYXRlb2ZiaXJ0aCI6IjIvMjUvMTk5MSAxMjowMDowMCBBTSIsIm5iZiI6MTY0MTQwNjk2MCwiZXhwIjoxNjQxNDEwNTYwLCJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3MDAwLyIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjcwMDAvIn0=
Run Code Online (Sandbox Code Playgroud)

之后,使用以下代码:

using System;
using System.Text;

namespace ConsoleApp
{
    class Program
    {
        static void Main(string[] args)
        {
            var coded = ("eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9kYXRlb2ZiaXJ0aCI6IjIvMjUvMTk5MSAxMjowMDowMCBBTSIsIm5iZiI6MTY0MTQwNjk2MCwiZXhwIjoxNjQxNDEwNTYwLCJpc3MiOiJodHRwczovL2xvY2FsaG9zdDo3MDAwLyIsImF1ZCI6Imh0dHBzOi8vbG9jYWxob3N0OjcwMDAvIn0=");
            string inputStr = Encoding.UTF8.GetString(Convert.FromBase64String(coded));
            Console.WriteLine(inputStr);

        }
    }
Run Code Online (Sandbox Code Playgroud)