2014-10-18 4 views
0

OpenSSL 라이브러리를 처음 사용하기 때문에 파이썬의 암호화 라이브러리의 출력과 일치하도록 출력을 얻을 수 없습니다. 아래는 그 예입니다.OpenSSL이 파이썬 hashlib와 일치하지 않습니다

파이썬 코드 :

import hmac 

secret = "asdf1234" 
string = '{"request"}' 

hmac.new(secret, string, hashlib.sha384).hexdigest() 
    '92904f1b3c210a4fb19f476c19f24452717e85329aa9ffaba4a5fbe1111c2e3fa7f5a5fb35fdc58b3d158f5f886c3d02' 

OpenSSL이 : 내가 잘못

echo -n {"request"} | openssl dgst -sha384 -hmac asdf1234 -hex 

(stdin)= 4c3d525b8a7095b9063a3bd974e56f0a5872399365912297d6ee18e400d2b55d0142395ba5fb4f33655ceca209ba9570 

을 뭐하는 거지? 어느 구현이 올바른가?

답변

1

openssl 출력과 일치 시키려면 파이썬 문자열을 '{"request"}' 대신 '{request}'이되어야합니다.

import hmac 
import hashlib 
secret = "asdf1234" 
string = '{request}' 

hmac.new(secret, string, hashlib.sha384).hexdigest() 

는 파이썬 출력과 일치하는 openssl 명령을 원하는 경우, 사용,

'4c3d525b8a7095b9063a3bd974e56f0a5872399365912297d6ee18e400d2b55d0142395ba5fb4f33655ceca209ba9570' 

을 산출 또는

(stdin)= 92904f1b3c210a4fb19f476c19f24452717e85329aa9ffaba4a5fbe1111c2e3fa7f5a5fb35fdc58b3d158f5f886c3d02 

를 산출

echo -n '{"request"}' | openssl dgst -sha384 -hmac asdf1234 -hex 

결국 451,515,

의 입력은 출력에 정합 기회가 일치 할 필요 :

% echo -n {"request"} 
{request} 

>>> print('{"request"}') 
{"request"}