Check if a string is encoded in base64 using Python

前端 未结 10 2075
离开以前
离开以前 2021-02-05 01:56

Is there a good way to check if a string is encoded in base64 using Python?

10条回答
  •  时光取名叫无心
    2021-02-05 02:37

    I was looking for a solution to the same problem, then a very simple one just struck me in the head. All you need to do is decode, then re-encode. If the re-encoded string is equal to the encoded string, then it is base64 encoded.
    Here is the code:

    import base64
    
    def isBase64(s):
        try:
            return base64.b64encode(base64.b64decode(s)) == s
        except Exception:
            return False
    

    That's it!

    Edit: Here's a version of the function that works with both the string and bytes objects in Python 3:

    import base64
    
    def isBase64(sb):
            try:
                    if isinstance(sb, str):
                            # If there's any unicode here, an exception will be thrown and the function will return false
                            sb_bytes = bytes(sb, 'ascii')
                    elif isinstance(sb, bytes):
                            sb_bytes = sb
                    else:
                            raise ValueError("Argument must be string or bytes")
                    return base64.b64encode(base64.b64decode(sb_bytes)) == sb_bytes
            except Exception:
                    return False
    

提交回复
热议问题