读书人

IMAP BASE64揭秘 怎么解出下面的编码

发布时间: 2013-12-11 16:44:13 作者: rapoo

IMAP BASE64揭秘 如何解出下面的编码
&ZbBe+k4ATiplh072WTk-123123


foxmail 新建邮件文件夹是这种,java有个单独的 BASE64EMail的解码类可以解出来别人测试的,但是我搞不懂JAVA

谁能解出来 麻烦把代码发上来 谢谢!
[解决办法]
MFC下 Base64可以用 atlenc.h 中的 Base64Encode Base64Decode 函数
[解决办法]
标准 base64 编码 使用:
26(A) + 26(a) + 10 (0) + 2 (+*)

你给的 “&ZbBe+k4ATiplh072WTk-123123”有 2个 不是
标准的。

所以不是 base64 或者是变种,
[解决办法]
请搜索"MIME base64"
[解决办法]
"MIME base64" 使用 2(*/), 也 不 包含 & 和 -
你 把 & 和 -(后) 去掉 试试。
[解决办法]
"ZbBe+k4ATiplh072WTk" 可以认为是, 试试 能不能 解出 什么
另外“关于 & 和 -+的描述,但是看不大懂”
请 复制到 帖子,我看看
[解决办法]
“5.1.3. 邮箱的国际命名约定
按照约定,IMAP4rev1的国际邮箱名用“UTF-7”中所描述的UTF-7编码的修订版本描述。在执行本协议的一个早期版本的服务器上,修订版UTF-7同样是可以用的。
在修订版UTF-7中,除“&”外的US-ASCII打印字符都可以表示邮箱名;即八进制值为0×20-0×25和0×27-0×7e的字符。字符“&”(0×26)表示成两个八进制串“&-”。
所有其它字符(八进制值为0×00-0×1f和0×7f-0xff)表示成修订版BASE64,它具有“UTF-7”之后的一个修订——“,”替代“/”使用。修订版BASE64不能用来表示任何可以表示自身的US-ASCII打印字符。
“&”用来转换至修订版BASE64,“-”用来转换回US-ASCII。不存在从BASE64至US-ASCII的隐式转换,且无效 转换(BASE64下的“-&”;注意,US-ASCII下的“&-”意为“&”)也是不允许的;就是说,一个以非 ASCII ISO-10646字符结尾的邮箱名必须以一个“-”结尾。
这些修订是为了修正与UTF-7的以下错误:
1)UTF-7使用“+”字符实现转换;这跟邮箱名称中的“+”,特别是USENET网络组名称的一般用法相冲突。
2)UTF-7的编码是BASE64,它使用“/”字符;这跟“/”作为层级分隔符的普遍用法相冲突。
3)UTF-7禁止“/”的未编码使用;这跟“/”作为层级分隔符的普遍用法相冲突。
4)UTF-7禁止“~”的未编码合用;这跟一些服务器将“~”作为根目录标记的用法相冲突。
5)UTF-7允许选择多种形式表示同样的字符串;特别的,US-ASCII打印字符可以表示成编码后的形式。
虽然修订版UTF-7是一个约定,它在服务器建立了用一个嵌入的“&”字符处理任意邮箱名的一些请求。特别的,服务器实现体必须保留一 个修订版UTF-7名称的修订版BASE64部分的准确形式,并把这些文本视为区分大小写的,即使邮箱名是不区分大小写的或者部分区分大小写、部分不区分 大小写的。
服务器实现体应当用一个嵌入的“&”字符——用作CREATE的一个变量,检验任意邮箱名:正确修订版UTF-7语法中,不含有多余的 转换符,也不含有可表示自身的任意US-ASCII打印字符的修订版BASE64编码。但是,客户端实现体不能依赖服务器做这个,也不应当试图用一个嵌入 的“&”字符创建一个邮箱名,除非它用修订版UTF-7的语法编译。
不遵照修订版UTF-7约定、输出一个邮件存储的服务器实现体必须转换成修订版UTF-7的、含有非ASCII字符或者“&”字符的任意邮箱名。
例如,这是一个混合有英文、中文和日文文本的邮箱名:
~peter/mail/&U,BTFw-/&ZeVnLIqe-
例如,字符串“&Jjo!”不是一个正确的邮箱名,因为它的“!”前没有至US-ASCII的转换符。正确的形式是 “&Jjo!-”。字符串“&U,BTFw-&ZeVnLIqe-”是不允许的,因为它含有多余的转换符。正确的形式是 “&U,BTF2XlZyyKng-”。”

又是 utf7 编码

读书人网 >VC/MFC

热点推荐