2.6에서 파이썬 프로젝트를 작업하고 있는데 파이썬 3의 향후 지원이 있습니다. 특히 digest-md5 알고리즘을 사용하고 있습니다. 이 가져 오기를 실행하지 않고 파이썬 2.6에서파이썬 : 문자열을 바이트로 연결하기
는 :
from __future__ import unicode_literals
나는 이와 같은 코드의 조각을 쓸 수 있어요 : 문제없이
a1 = hashlib.md5("%s:%s:%s" % (self.username, self.domain, self.password)).digest()
a1 = "%s:%s:%s" %(a1, challenge["nonce"], cnonce)
, 내 인증이 잘 작동합니다.
UnicodeDecodeError : 나는 unicode_literals와 동일한 코드 라인을 때 나는 예외가 가져온 'UTF8'코덱이 위치 0 바이트 0xa8을 디코딩 할 수 없습니다 예기치 않은 코드 바이트
가 지금은 비교적 새로운 해요 파이썬 그래서 나는 이것을 알아 내는데 조금 갇혀있다. 형식 문자열에서 % s을 % r (으)로 바꾸면 문자열을 연결할 수 있지만 인증이 작동하지 않습니다. 내가 읽었던 digest-md5 스펙은 16 옥텟 바이너리 다이제스트가이 다른 문자열에 추가되어야한다고 말한다.
의견이 있으십니까?
Python 3.x는 문자열을 바이트 배열에서 명확히 구분합니다. 필요에 따라 바이트 배열을 얻기 위해'% s : % s : % s "과'b' 패턴을 앞에 붙일 수도 있지만 잘못된 결과를 줄 수도 있습니다. 어쨌든이 코드의 목적은 무엇입니까? – Philipp
이것은 xmpp 서버에 대해 인증 할 때 사용하는 digest-md5 알고리즘에 사용되는 더 큰 코드 단편입니다.이 코드는 특정 문제를 일으키는 특정 부분입니다. b와 함께 서식 문자열이 미리 보류되어 있어도 동일한 문제가 발생합니다. 다음은 digest-md5를 만드는 방법에 대한 추가 정보입니다. http://web.archive.org/web/20050224191820/http://cataclysm.cx/wip/digest-md5-crash.html – Macdiesel