在我开始之前:是的,我已经检查了此主题的其他问题和答案,无论在这里还是其他地方。
我找到了一个示例字符串,即使它实际上并没有进行base64编码,.Net也会对其进行base64解码。以下是示例:
Rhinocort Aqueous 64mcg / dose鼻喷雾
.Net方法Convert.FromBase64String在解码此字符串时不会引发异常,因此我的IsBase64Encoded方法会为此字符串返回true。
有趣的是,如果我使用cygwin base64 -d命令以此字符串作为输入,则会失败并显示“invalid input”消息。
更有趣的是,我认为属于此可执行文件的源代码(http://libb64.sourceforge.net/)使用相同的结果“解码”了此字符串,就像我从.Net Convert.FromBase64String中得到的结果一样。我将继续寻找希望在其他地方找到线索,但现在我感到困惑。
有什么想法吗?
base64 -di
命令也可以得到相同的结果。没有一种真正可靠的方法来检查数据是否为base-64编码,只能依赖某种启发式方法。任何长度是4的倍数并且由[a-zA-Z0-9]匹配的字符串都可以被解码,但这些字符串可能不代表实际的base-64编码数据。 - Mike Zboray= * 2
到那个正则表达式中。 - Jim Mischel