UnicodeDecodeError:'utf8'编解码器无法解码位置3中的字节0xaf:python 2.7中的无效起始字节

时间:2018-06-19 00:55:24

标签: python-2.7

using windows10 python 2.7

我的解密代码


    def decrypt(self, enc):
            enc = b64decode(enc)
            iv = enc[:16]
            cipher = AES.new(self.key, AES.MODE_CBC, iv)
            print cipher,"======"
            dec = cipher.decrypt(enc[16:])
            #print dec,"========",dec
            unp = unpad(dec)
            print unp,"=========","=fdkjfsdklfsdjndjdjk"
            decode = unp.decode('utf8')
            #decode = unp.decode('utf8')
            print decode
            # unpad(cipher.decrypt(enc[16:])).decode('utf8')
            return decode

解密加密响应cipher.decrypt(enc [16:])行时

给出了我的输出。但实际上它应该是XML格式。

 )^»3(Fm╠¡Oå┤╖¢iOÑ>s▌B¿▌╥≥┐Éj6╬░¢√(å¥  2?J≤ôGOL═\¥°t╬╚ΓÜ▐╝Φ÷═AQw≥[&nΣ±ƒ∩(╩ûGN~[3bgrHPÜ4%╖H⌡▄wÅ|■Çq≥½÷σHñxìdºwë±!│▐íWÇÿΘ╦σ╖è#X▓┤2ÿ       ┘╟ƒΣ°Y░çNßæÅαb3f«─O(Wo9┐A╕t£╧{K [X┴┬ÜHΘ⌠X4┬Æ≡~╠h3ε┘σmÉfú.Fú╜₧c!_╒▐wα²A/╒|─sY%=⌐▒Yö╕[╞ε░::tA┴₧µ≤²∙C─A█₧╕╧τ╙x≤rƒú░uú█å┬-╤`╡f╕^∞tΦ½q╗&╪─╘¥&┐Σ₧▌(╙┌JüñÇäQ¥/*ó▐H!C┬+δà\Bah╘áÆXu╥C█│¼)ë╩╓*E(÷·├à√¿╨╧1Θ·0≈º²║Ås┬xOò}a╪╔╫HÜq┬gqÅÖ⌐4~v╖·9╥Ü$wçZ▌╗┬? /Zj12^}&t$F=SBKhöåε è╝o╪█º8fìîé╫=«·gO:Z╢≡2╔K«Θ uè/╩ {⌐Åwwε^α┼µk4┘Ñ╧:ƒ16║╞ⁿB°¢üdó?eB┼P┌L_90]\5W╥µA⌐
    #Mq╤ìⁿ²ç≥Θ·▓F₧▀) ç@ë╒╖às2╡}πL╕╨60ä┌ù6▒.rn╔jⁿR¢∙µIëÉ╝µè}c≈σß_αäcª/╤"lK*└qX2H öφq#â½æΘjÄ% é6#üY█▓aFßα█÷I║n+⌡▄Ä!jTÄ√∩yr¥d"╛¬z√ⁿµº½êYⁿπ¬2[╕¿≡ÿ │Uv?{τæτ°QÜĵ╨íkUFπ╚BπÆ! Hiåƒ╒£αì≥Æεtr█[╤àÆ█oíΩ("┤╞åMÜò╝D3╬¿VτΩr▓ÜÆÿ$┌)⌠≡\~╩▀Rr≡y£₧≤║L>╙ ╘µv9ÿæ├@B≡µ£╕Ew╗yÿtXeY.αÑsú Y±£∩=yy¥óüΣÆF╧╦á─}      Oƒ≥-9[≤¢fúΣe3&Öÿ░ìç·ntÄO
    l∙m¥\╞&KêëR»s╔E2╨ª│OV≥░m═╬2┬₧ú(ûöz¢¼╣\≤5nqò+╝±Äm{Gσ╝ROφNµàg╛RV╨;Lδa ,é/ⁿY╜|┤ñ╔÷πvⁿ╞W▓π}Rå#h$*πAò¼2╝CÅk*l"h╕≥aÆhæt)9▐░╝.]B}-╢└∩Iσw┬╚D&5≡▒²`WJ╔╫⌡K1∩        fú~A▌c▄mÑ┴?ôQ╩ƒⁿ|╨{ç▒·ΘB╡Φτ▌⌠─╘q?nⁿC/v>σ°┬#'L┌ 0Kè£
    ╩[Érekx«wë,\¥─K\a╡·┐PDIF╩l╤YH╞F$c6≈G¡Üc^r=pbiµΦ┘±ÿ▓zΦ¿0░ì┐á7┌o■«-ⁿ#,

虽然在unp.decode('utf8')行进行解码会出现以下错误

    Traceback (most recent call last):
      File "nic_dycrypt_encrypt.py", line 99, in 
        print('Ciphertext:', AESCipher(key).decrypt(ciphertext))
      File "nic_dycrypt_encrypt.py", line 86, in decrypt
        decode = unp.decode('utf8').strip()
      File "C:\Python27\lib\encodings\utf_8.py", line 16, in decode
        return codecs.utf_8_decode(input, errors, True)
    UnicodeDecodeError: 'utf8' codec can't decode byte 0xaf in position 3: invalid start byte

Please any one help me to know what is that format and why the error is coming and how to resolve

1 个答案:

答案 0 :(得分:0)

简单地说,并非所有字节和/或字节序列都映射到unicode字符。事实上,大多数字节序列都没有UTF-8字符映射。

常见的解决方案是将二进制转换为可以处理所有字节值的编码,最常见的是Base64和Hexadecimal。