Check If A String Is Encoded In Base64 Using Python
Answer :
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  import base64 import binascii  try:     base64.decodestring("foo") except binascii.Error:     print "no correct base64"  This isn't possible. The best you could do would be to verify that a string might be valid Base 64, although many strings consisting of only ASCII text can be decoded as if they were Base 64.
Comments
Post a Comment