openssl 이진 base64 값에서 sha1 해시 파생


1

디지털 시네마 패키지에는 다음과 같은 형식의 체크섬이 포함되어 있습니다 .

$ openssl sha1  -binary 'dcpfile.xml' |openssl base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=

IxcfhXNHlw+1bbDFu0kp8KRylpU=원래 sha1 해시와 같은 값을 가져 와서 어떻게 얻을 수 있습니까?

$ openssl sha1 'dcpfile.xml' 
SHA1(dcpfile.xml)= 23171f857347970fb56db0c5bb4929f0a4729695

내 유스 케이스는이 바이너리 / base64 값을 사용하는 md5sum 유형 체크섬 매니페스트를 쉽게 확인할 수있는 체크섬 유효성 검사 도구가 많지 않지만 sha1을 유효성 검사하는 도구가 많기 때문에 알고 있으면 좋을 것입니다 보다 상호 운용 가능한 해시 목록을 생성하는 스크립트를 작성할 수 있도록 이러한 값을 되 돌리는 방법.

답변:


1

두 값 모두 동일한 해시 입니다. 두 개의 다른 인코딩 (표현)으로 표시되는 동일한 "이진"바이트이며 다른 것보다 "원본"이 아닙니다.

(Base64는 문자 당 6 비트이며 16 진수 일명 base-16은 숫자 당 4 비트입니다. 3 개의 원시 바이트, 4 개의 Base64 숫자, 6 개의 16 진수는 직접 변환 가능합니다.)

거의 모든 프로그래밍 언어에는 이러한 형식을 인코딩 / 디코딩하는 기능이 있습니다. 예를 들어 쉘 도구에서

  • Base64를 원시 이진 데이터로 디코딩하려면 base64 -d또는을 사용하십시오 openssl base64 -d.

  • 진수로 원시 이진 데이터를 인코딩하기 위해 사용 xxd -p하거나 hexdump.

$ echo 23171f857347970fb56db0c5bb4929f0a4729695 | xxd -r -p | base64
IxcfhXNHlw+1bbDFu0kp8KRylpU=

$ echo IxcfhXNHlw+1bbDFu0kp8KRylpU= | base64 -d | hd
00000000  23 17 1f 85 73 47 97 0f  b5 6d b0 c5 bb 49 29 f0  |#...sG...m...I).|
00000010  a4 72 96 95                                       |.r..|

완벽합니다. 그래서 이것은 openssl sha1 -binary 'dcp_file.xml' |openssl base64 | base64 -d | xxd -p 생산할 것입니다. 23171f857347970fb56db0c5bb4929f0a4729695이제는 파이썬으로 모든 것을해야합니다. 감사합니다!
Tandy Freeman

1
가져 오기 base64binascii.
grawity

감사합니다!! 이것은 내 인생을 훨씬 쉽게 만들 것입니다.
Tandy Freeman

import binascii import base64 a = 'IxcfhXNHlw+1bbDFu0kp8KRylpU=' b = base64.b64decode(a) binascii.hexlify(b).decode() u'23171f857347970fb56db0c5bb4929f0a4729695'
Tandy Freeman
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.