我编写了一个从 POP3 服务器检索邮件的程序。它的一位用户遇到以下问题......
当我的程序连接到它时,他的邮件服务器会发出问候:
+OK Lotus Notes POP3 server version X2.0 ready <PrintableCharacters.UnprintableCharacters>
尖括号中的部分是对APOP授权的所谓挑战。质询(以及 POP3 协议中的所有其他字符串)通常仅包含 ASCII 字符。但这次挑战由两部分组成 - 第二部分包含不可打印的字符。模式如下:首先是 0x5,然后是一些非 ASCII 字符。这看起来像是Lotus Notes 开发人员引入的特殊编码。
当我按原样提取挑战并将其用于 APOP 身份验证时,服务器会拒绝。
在仔细阅读了我在 LMBSC 上找到的所有内容后,我扣除了以下内容。0x5 是表示所谓“第 5 组”字符的前缀。每个字符实际上都是 Win-1251 字符,但前面加了 0x5。
有了这个,我只是剥离了所有 0x5,只留下合法的 ASCII 和不可打印的 Win-1251,并将它们传递给通常的 APOP 身份验证算法。但是服务器拒绝。
这是用 Win-1251 字符解码 LMBSC 的正确方法还是服务器端的问题?