我知道已经有很多关于这方面的问题,形式各异。我的问题稍微直接一些。
使用 Free Pascal 和 s:=DecodeStringBase64(s); 函数,是否无论如何要验证作为 s 传递的解码字符串是否实际上是从正确的 Base64 输入数据中解码的,以避免解码垃圾?
我所做的最好的事情是使用 reg exp 来识别潜在的 Base64 数据(来自此处接受的答案)。然后我使用 mod 检查它是否可以被 4 整除。如果它可以被 4 整除,我将它传递给 DecodeStringBase64。但是,尽管匹配 reg exp,我仍然收到很多误报和返回的数据,这些数据已经“解码”但显然不是 Base64。例如,“WindowsXP=" 匹配表达式但不是 Base64 编码数据。
同样,名称“Ted”编码为 VGVk,它甚至没有通常的“=”填充(有助于将其标记为页脚),但它仍然是我想查找和解码的潜在 Base64 片段。
在 PHP 中,有base64_decode()可以传递一个 true 参数来帮助验证。
AFAIK,Free Pascal 在DecodeStringBase64中没有这个,我需要一些验证方法。
其他关于解码和编码主题的有用回复,如果读者碰巧像我昨天一样在寻找它,在这里