2011-11-15 37 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"; 
    }