c#SMTP PLAIN AUTH格式

时间:2014-10-25 18:32:54

标签: c# authentication smtp

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

  

AUTH PLAIN ADEAMg ==

“ADEAMg ==”是我上面解释的字符串。我检查了在线Base64解码器,所有这些都告诉我“MTI =”是正确的base64解码字符串“12”。有人知道字符串“ADEAMg ==”是什么样的格式?它应该建立在“12”之外。我不知道如何编码这个字符串以获得清晰的结果。在线编码器网站向我展示了一些特殊符号,如“specialsymbol1specialsymbol2”。我试图使用.Replace()来删除这些特殊符号,但我尝试过的都不起作用。总而言之,使用.Replace并不是最好的解决方案,所以我问你,也许你知道什么样的格式(“ADEAMg ==”)。

问候;

1 个答案:

答案 0 :(得分:2)

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

31 32

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

00 31 00 32

在线Base64解码器尝试在一个字节字符集中显示这些UTF-16BE字节,因此您可以得到如下内容:

�1�2

有关UTF-16的更多信息:http://en.wikipedia.org/wiki/UTF-16

<小时/> 编辑:此代码段将ADEAMg==解码为12字符串:

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