WinSCP .net 库 - Protocol.Ftp - System.FormatException Base-64 字符数组或字符串的长度无效

WinSCP .net library - Protocol.Ftp - System.FormatException Invalid length for a Base-64 char array or string

我正在使用 SFTP,只是想将 Ftp 添加到我们现有的程序中。 Ftp 协议推荐的 SshHostKeyFingerprint 是否与 SFtp 相同?

如果需要,我将如何格式化此密钥?它需要像“sha-256-”这样的前缀吗?

b5:d2:ab:1a:07:9c:88:b7:0a:fc:6e:1a:f1:c0:aa:c5:c4:93:c3:32:ce:bc:a1:e3:f1:4a:2c:02:f8:32:35:c9

当 运行 此 C# 代码时出现错误:

                sessionOptions = new SessionOptions
                {
                    Protocol = Protocol.Ftp,
                    HostName = HostName,
                    PortNumber = HostPort,
                    UserName = UserName,
                    Password = Password
                };

运行 的结果错误是:

Exception thrown: 'System.FormatException' in mscorlib.dll Invalid length for a Base-64 char array or string.

程序在错误中没有完整的堆栈跟踪。 当我添加它时,我看到包含错误的模块:“WinSCPWrapperGet.Program.get_Password()” (其中“WinSCPWrapperGet”是我正在修改的程序)。

我做了一个错误的假设,因为我有前后日志语句,所以错误出在 WinScp 库中。

            WriteLogConsole("Using Protocol.Ftp");
            sessionOptions = new SessionOptions
            {
                Protocol = Protocol.Ftp,
                HostName = HostName,
                PortNumber = HostPort,
                UserName = UserName,
                Password = Password
            };
            WriteLogConsole("Used Protocol.Ftp");

原来“密码”是一个属性,有一些“getter逻辑”...

static string Password { get { return Encoding.ASCII.GetString(Convert.FromBase64String(GetStringValueFromConfigKey("Password", ""))); } }

我们在配置文件中对密码进行了 base64 编码,但我没有这样做。所以我可能会更改该代码以提供更友好的错误。