2017-12-16 3 views
-3

api 서비스에 연결하기 위해 암호를 계산해야합니다. 요구 사항은 다음과 같습니다 암호 ZDg3MTZiZTgwYTMwYWY4Nzc4OGFjMmZhYjA5YzM3MTdlYmQ1M2ZkMw==을 제공파이썬 3과 암호 인증 해싱

Password = base64 encoded(sha1(nonce+created+secret)) 
where: 
     nonce = 186269 
     created = 2015-07-08T11:31:53+01:00 
     secret = Ok4IWYLBHbKn8juM1gFPvQxadieZmS2 

필수입니다. 난으로 접근 해요 :

psw = hashlib.sha1() 
psw.update(b"186269") 
psw.update(b"2015-07-08T11:31:53+01:00") 
psw.update(b"Ok4IWYLBHbKn8juM1gFPvQxadieZmS2") 
enc_psw = base64.b64encode(psw.digest()) 

그러나이 원시 메시지 요약 될 수 없습니다 꽤 분명하다 'ZDg3MTZiZTgwYTMwYWY4Nzc4OGFjMmZhYjA5YzM3MTdlYmQ1M2ZkMw=='의 길이에서 나에게

+0

을 그리고 당신의 질문은 무엇인가 :

이의 시도하자? –

+0

@MonkeySupererson 내 질문을 편집했습니다. – twindad

답변

1

결과로 2HFr6Aowr4d4isL6sJw3F+vVP9M=을 제공합니다. SHA-1은 20 문자 (160 비트) 바이트 문자열을 출력합니다. 우리는이 b64decode()를 통해 실행하는 경우

우리는 fishily SHA-1의 16 진수 표현 대신 원시 비트의 소화되는 것처럼

b'd8716be80a30af87788ac2fab09c3717ebd53fd3' 

이 보이는 얻을. 16 진수 만 포함하고 길이는 정확히 40 자입니다. 숫자 당 4 비트로 SHA-1에서 정확히 160 비트를 얻습니다.

>>> enc_psw = base64.b64encode(psw.hexdigest().encode('ASCII')) 
>>> print(enc_psw) 
b'ZDg3MTZiZTgwYTMwYWY4Nzc4OGFjMmZhYjA5YzM3MTdlYmQ1M2ZkMw=='