c#SMTP普通身份验证格式

c#SMTP普通身份验证格式,c#,authentication,smtp,C#,Authentication,Smtp,这篇文章会长一点。我在一台c#SMTP服务器上工作。我试着让这个服务器和一个特殊的邮递员一起工作。今天我在做auth模块。客户端应将用户+密码作为一个字符串发送,并解码为BASE64字符串。我使用了用户名“1”和密码“2”。我使用的第三方软件已发送到我的服务器: AUTH PLAIN ADEAMg== “ADEAMg==”是我上面解释的字符串。我检查了在线Base64解码器,他们都告诉我“MTI=”是“12”的正确Base64解码字符串。有人知道字符串“ADEAMg==”是什么格式吗?它应该由“

这篇文章会长一点。我在一台c#SMTP服务器上工作。我试着让这个服务器和一个特殊的邮递员一起工作。今天我在做auth模块。客户端应将用户+密码作为一个字符串发送,并解码为BASE64字符串。我使用了用户名“1”和密码“2”。我使用的第三方软件已发送到我的服务器:

AUTH PLAIN ADEAMg==

“ADEAMg==”是我上面解释的字符串。我检查了在线Base64解码器,他们都告诉我“MTI=”是“12”的正确Base64解码字符串。有人知道字符串“ADEAMg==”是什么格式吗?它应该由“12”组成。我不知道如何对这个字符串进行编码以获得清晰的结果。在线编码器网站向我展示了一些特殊符号,如“SpecialSymbolSpecialSymbol2”。我试图使用.Replace()删除这些特殊符号,但我所做的一切都不起作用。总之,使用.Replace不是最好的解决方案,所以我问你,也许你知道(“ADEAMg==”)是什么格式


问候

MTI=
是Base64编码的ASCII“12”字符串。此ASCII字符串的二进制表示(十六进制字节)如下所示:

31 32
00 31 00 32
ADEAMg==
是Base64编码的Unicode(UTF-16BE)“12”字符串。此UTF-16BE字符串的二进制表示(十六进制字节)如下所示:

31 32
00 31 00 32
在线Base64解码器尝试在单字节字符集中显示这些UTF-16BE字节,因此您可以得到如下结果:

�1�2
有关UTF-16的更多信息:
编辑:此代码段将
ADEAMg==
解码为
12
字符串:

byte[] bytes = Convert.FromBase64String("ADEAMg==");
string result = Encoding.BigEndianUnicode.GetString(bytes);

你知道如何转换数组的字段(ADEANg==是数组的一个字段)吗?这样我就可以做一个简单的if检查,比如:if password==“12”@Pekinese添加了一个代码片段,对string进行解码
ADEANg=
我使用了这个代码,结果是“16”而不是“12”,我的错在哪里<代码>字符串[]p=新字符串[]{“ADEANg==”};byte[]bytes=Convert.FromBase64String(p[0]);字符串结果=Encoding.bigendianucode.GetString(字节);控制台写入线(结果);Console.ReadLine()无故障,
ADEANg==
解码为
16
,问题不同:
ADEAMg==