在我開始之前:是的,我已經在這裏和其他地方查看了關於此主題的其他問題和解答。可靠地檢查一個字符串是否以.net編碼的.net
我發現了一個示例字符串,即.Net將base64解碼,即使它實際上不是base64編碼。這裏是例子:
雷諾考特水64mcg /劑噴鼻劑
的.NET方法Convert.FromBase64String解碼這個字符串時,所以我IsBase64Encoded方法愉快地返回該字符串則不會拋出異常。有趣的是,如果我使用cygwin base64 -d命令使用此字符串作爲輸入,它會失敗,消息無效輸入。
更有趣的是,我認爲屬於這個可執行文件的源代碼(http://libb64.sourceforge.net/)「解碼」了這個相同的字符串,其結果與我從.Net Convert.FromBase64String獲得的結果相同。我會繼續尋找希望在其他地方找到線索,但現在我很難過。
任何想法?
見〔式中,箱子拋出異常(http://msdn.microsoft.com/en-us/library/system.convert.frombase64string(V = vs.110)的.aspx) 。你的字符串符合條件(意外)。 – Suzi 2014-10-30 02:18:50
這就是問題所在,它沒有拋出異常 – MrBoffin 2014-10-30 02:22:28
.NET版本忽略空白字符(特別是'','\ n','\ r'和'\ t'),這些字符無效。如果你使用'base64 -di',我相信你會得到相同的結果。沒有真正的辦法來檢查,不依賴於某種有害的。任何匹配[a-zA-Z0-9]的長度爲4的倍數的字符串都將有效解碼,但可能不會表示實際的base-64編碼數據。 – 2014-10-30 02:38:33