这篇文章会有点长。我正在使用c#SMTP服务器。我试着让这台服务器与一个特殊的邮件程序一起工作。今天我正在研究auth模块。客户端应将用户+密码作为一个解码为BASE64字符串的字符串发送。我用作用户名“1”和密码“2”。我用过的第三方软件发送到我的服务器:
AUTH PLAIN ADEAMg ==
“ADEAMg ==”是我上面解释的字符串。我检查了在线Base64解码器,所有这些都告诉我“MTI =”是正确的base64解码字符串“12”。有人知道字符串“ADEAMg ==”是什么样的格式?它应该建立在“12”之外。我不知道如何编码这个字符串以获得清晰的结果。在线编码器网站向我展示了一些特殊符号,如“specialsymbol1specialsymbol2”。我试图使用.Replace()来删除这些特殊符号,但我尝试过的都不起作用。总而言之,使用.Replace并不是最好的解决方案,所以我问你,也许你知道什么样的格式(“ADEAMg ==”)。
问候;
答案 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);