2012-09-14 4 views
1

의 SHA-1 해시를 인코딩 나는 문자열의 SHA-1 해시의 URL 안전 기본-64 인코딩을 생성하는 파이썬 명령이 bash 쉘에서 같은 일을하지만 문제가 실행 해요 :자료 64 배쉬 쉘

me:~$ echo -n "abc" | sha1sum | sed 's/ .*//' 
a9993e364706816aba3e25717850c26c9cd0d89d 
me:~$ echo -n "abc" | sha1sum | sed 's/ .*//' | base64 
YTk5OTNlMzY0NzA2ODE2YWJhM2UyNTcxNzg1MGMyNmM5Y2QwZDg5ZAo= 

나는이 그 (16 진수 형식) sha1sum 출력합니다 방식으로 인해이라고 생각한다. 나는 base64로 40 바이트를 읽고 생각하지만 정말 나만의 iconv를 통해 배관 시도했습니다 (20)를 읽고해야하지만, 거기에는 성공하지 :

me:~$ echo -n "abc" | sha1sum | sed 's/ .*//' 
a9993e364706816aba3e25717850c26c9cd0d89d 
me:~$ echo -n "abc" | sha1sum | sed 's/ .*//' | base64 
YTk5OTNlMzY0NzA2ODE2YWJhM2UyNTcxNzg1MGMyNmM5Y2QwZDg5ZAo= 
내가 '출력을 얻기 위해 여기 일을해야 무엇

기대하고 있니?

미리 도움을 청하십시오!

+0

하는 것이 간단하지 않을까요 파이썬에서 16 진수로 SHA1을 인쇄 하시겠습니까? 이것이이 특정 데이터 유형에 대해 사람이 읽을 수있는 거의 보편적 인 표현입니다. – tripleee

답변

7

다이제스트()과 동일하지 않습니다 hexdigest() 다이제스트

base64.urlsafe_b64encode((sha.new("abc").hexdigest())) 
'YTk5OTNlMzY0NzA2ODE2YWJhM2UyNTcxNzg1MGMyNmM5Y2QwZDg5ZA==' 

문서화 문자열 :

Type:  builtin_function_or_method 
Base Class: <type 'builtin_function_or_method'> 
String Form:<built-in method digest of _hashlib.HASH object at 0x1c88940> 
Namespace: Interactive 
Docstring: Return the digest value as a **string of binary data**. 

편집 : 시도 :

echo -n "abc"| openssl sha1 -binary | base64 
qZk+NkcGgWq6PiVxeFDCbJzQ2J0= 
+0

예, 이해합니다. 나는 Bash 명령 출력을 파이썬 출력과 일치 시키려고 노력하고있다. 다른 방법은 아닙니다. 내 파이썬 명령에 사용 된 방법은 내 통제에서 벗어났다. –

+0

편집을 보았습니다. 완전한! 그게 바로 제가 찾던 것입니다. 감사! –

+0

정확히 파이썬 버전과 같지 않지만 비슷합니다 ... –