2016-11-01 10 views
-1

repl.it 파이썬 웹 IDE를 사용하고 있으며 실제로 문제를 해결할 수 없습니다.UnicodeDecodeError : 'utf8'코덱에서 3 바이트 위치 0xa3을 디코딩 할 수 없습니다. 유효하지 않은 시작 바이트

문자열을 디코드하려고했지만 그럴 방법이없는 것 같습니다. 그것은 무의미한 진 일련의 바이트, 하지 모두에서 텍스트이기 때문에

import base64 

ciphertext = 'FxM7o1wl/7wE9CHPNzbB944feDFXbTSVaJfaLsUMzH5EP4xZRz7Sq8O3y7+jPbXIMVRxpvJZZm7ugqQ4fwpJwtvnB0/BoU+hhGeEZZZ0fFj1irm/zg3bsxOoxBJx4B3U' 

ciphertext = base64.b64decode(ciphertext) 

print ciphertext 

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 3: invalid start byte

+0

귀하의 변수 이름'ciphertext'에 따르면, 나는 당신의 문자열이 여전히 어떻게 든 암호화되어 있다고 생각합니다. 인쇄하기 전에 해독해야합니다. 중간 결과를 보려고한다면 'print repr (cipertext)'를 사용하십시오. –

+0

코드를 복사하여 붙여 넣었습니까? –

답변

3

당신은 인쇄ciphertext, (I 체크) 할 수 없다.

터미널에서 무언가를 인쇄 할 때 그 무엇인가가 UTF8이라고 가정하고 있습니다. 및 it is not. Hence the error. VGhpcyB3aWxsIGJlIHByaW50ZWQuCg==의 암호문을 가지고 있다면 문제없이 인쇄 될 것입니다. 유효한 UTF-8 (실제로 유효한 ASCII-7)로 디코딩되기 때문입니다.

암호문을 표시하려면 비 UTF8 문자를 공백으로 대체하거나 암호문을 16 진수로 인쇄 할 수 있습니다.

실제로 실제로 수행해야하는 작업은 인쇄하기 전에 암호 해독을 수행하는 것입니다 (작업을 마쳤 으면 ISO-8859-15 또는 다른 문자 집합으로 인코딩 된 UTF8 텍스트가 아니라는 것을 확인하십시오). 그렇다면 적절한 코덱을 사용할 수 있으며 this answer은 문자 집합에 대한 유용한 정보도 제공합니다.

+0

해독하는 방법에 대한 아이디어가 있으십니까? –

+0

이것은 분명히 무작위 인 96 바이너리 바이트 (따라서 768 비트) 시퀀스입니다. 그것은 ** 물건 **일지도 모르지만, 암호가 간다대로, 나는 사지에 나가 Rijndael 암호에 내기 할 것입니다. 암호화 키가 없으면 현실적으로 깨질 수 없습니다. – LSerni

+0

사실 나는 열쇠를 가지고 있습니다. fbc8b03597d6ccc89ac9f823 –