2011-11-15 38 views
1

我有一個有趣的問題。我正在研究一個Perl腳本,它接受各種字符串,一些base64編碼,其他的不是。Perl - 何時進行base64解碼?

該數據結構是動態的,由第三方應用程序的輸入生成。我沒有一個現成的方法可以預先知道哪些字段是base64編碼的,哪些不是。

我看過的各種解決方案都涉及輸入數據的正則表達式。不幸的是,如果數據具有相同的嚴格字母數字結構,這些都會失敗。

如何確定哪些字符串是真正的base64編碼?

+0

此前回答[正則表達式來解析或驗證的Base64數據](http://stackoverflow.com/questions/475074/regex-to-parse-or-validate-base64-data)問題應該幫助。 – yko

回答

0

我最終將一切解碼到一個臨時變量,並看到輸出包含任何高八位字節輸出。

$value2=decode_base64($hash{$key}); 
    if(!($value2 =~ m/[\x7F-\xFF]/)) 
    { 
     print "It appears that $key is base64 encoded.\n"; 
     $value=$value2; 
    } 
    else 
    { 
     print "It appears that $key is not base64 encoded.\n"; 
    }