Remove the new line “\n” from base64 encoded strings in Python3?

后端 未结 4 2094
感情败类
感情败类 2021-02-05 03:15

I\'m trying to make a HTTPS connection in Python3 and when I try to encode my username and password the base64 encodebytes method returns the encoded v

相关标签:
4条回答
  • 2021-02-05 03:49

    Instead of encodestring consider using b64encode. Later does not add \n characters. e.g.

    In [11]: auth = b'username@domain.com:passWORD'
    
    In [12]: base64.encodestring(auth)
    Out[12]: b'dXNlcm5hbWVAZG9tYWluLmNvbTpwYXNzV09SRA==\n'
    
    In [13]: base64.b64encode(auth)
    Out[13]: b'dXNlcm5hbWVAZG9tYWluLmNvbTpwYXNzV09SRA=='
    

    It produces identical encoded string except the \n

    0 讨论(0)
  • 2021-02-05 03:57

    Following code would work

    auth_base64 = auth_base64.decode('utf-8').replace('\n', '')
    
    0 讨论(0)
  • 2021-02-05 04:11

    for python3 use:-

    binascii.b2a_base64(cipher_text, newline=False)

    for python2 use:

    binascii.b2a_base64(cipher_text)[:-1]

    0 讨论(0)
  • 2021-02-05 04:15

    I concur with Mandar's observation that base64.xxxx_encode() would produce output without line wrap \n.

    For those who want a more confident understanding than merely an observation, these are the official promise (sort of), that I can find on this topic. The Python 3 documentation does mention base64.encode(...) would add newlines after every 76 bytes of output. Comparing to that, all other *_encode(...) functions do not mention their linewrap behavior at all, which can argurably be considered as "no line wrap behavior". For what it's worth, the Python 2 documentation does not mention anything about line wrap at all.

    0 讨论(0)
提交回复
热议问题