检测base64编码

Posted

技术标签:

【中文标题】检测base64编码【英文标题】:Detect base64 encoding 【发布时间】:2011-10-30 21:48:42 【问题描述】:

有谁知道一个jQuery插件可以检查文本是否是随机编码的base64?我希望能够解码 base64 字符串,但前提是字符串被编码为开头。我看到了几个可以编码和解码的脚本,但我确实有一个可以检查字符串是否被编码。

这样的事情存在吗?

【问题讨论】:

相关问:***.com/questions/3355407/… 【参考方案1】:

它真的必须是一个 jQuery 插件吗?只需使用简单的 javascript 正则表达式匹配:

var base64Matcher = new RegExp("^(?:[A-Za-z0-9+/]4)*(?:[A-Za-z0-9+/]2==|[A-Za-z0-9+/]3=|[A-Za-z0-9+/]4)$");

// ...

if (base64Matcher.test(someString)) 
    // It's likely base64 encoded.
 else 
    // It's definitely not base64 encoded.

正则表达式模式取自这个问题:RegEx to parse or validate Base64 data。

【讨论】:

不..我可以自己做扩展。谢谢。 某些文本失败,例如“灰色”是 base64 编码的字符,不是。 这正是答案说“可能”而不是“肯定”的原因。【参考方案2】:

对于我来说,上述答案不包括在字符串末尾的等号(= 或 ==)填充。我已经更新了查询,以下对我有用。

var base64Matcher = new RegExp("^(?:[A-Za-z0-9+/]4)*(?:[A-Za-z0-9+/]2==|[A-Za-z0-9+/]3=|[A-Za-z0-9+/]4)([=]1,2)?$");

【讨论】:

【参考方案3】:

我知道这可能会迟到回答,但这是我到目前为止提出的。在这种情况下,我在 jQuery 中使用 match。这适用于图像或文本。希望这会有所帮助

var sSampleBase64Text = 'data:text/plain;base64,MSkgTG9naW4gRGV0YWlscwogPj4gdGNfYWRtaW5fYXllZQogPj4gdHdpbmtsZXMyMnRo';
var mCheckMatchResult = sSampleBase64Text.match(/^(?:[data]4:(text|image|application)\/[a-z]*)/);

var sAlertMessage = 'Valid base 64 encode string';
if (mCheckMatchResult === null || mCheckMatchResult.length <= 0) 
     sAlertMessage = 'Not a valid base 64 encode string';
 

$('.result').append('<p>' + sAlertMessage + '</p>');

尝试在此处查找: https://jsfiddle.net/lajatomary/a8tugwe3/4/

【讨论】:

【参考方案4】:

刚刚遇到这个问题并找到了可能有用的解决方案:

function safeBase64Encode(testString) 
  try 
    // If it's encoded, it will look the same in atob(btoa()) and btoa(atob())
    let isEncoded = btoa(atob(testString)) == atob(btoa(testString))
    if ( isEncoded ) 
      return testString
      
   catch (err) 
    // If we get an error like it's not a valid encoding, you gotta encode it.
    return btoa(testString)
  

【讨论】:

以上是关于检测base64编码的主要内容,如果未能解决你的问题,请参考以下文章

用于检测 base64 编码字符串的正则表达式

密码学Base64 编码 ( Base64 简介 | Base64 编码原理 | 最后编码组字节不足时补位 ‘=‘ 符号 | Base64 编码实现参考 )

Base64编码 图片与base64编码互转

在PHP中从base64字符串中检测图像类型

将 Base64 编码图像加密为另一个有效的 Base64 编码图像

Base64编码