Derive o hash sha1 do valor binário base64 do openssl

Derive o hash sha1 do valor binário base64 do openssl

Os pacotes de cinema digital contêm somas de verificação no seguinte formato, conforme descritoaqui:

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

Como posso pegar um valor como IxcfhXNHlw+1bbDFu0kp8KRylpU=e derivar o hash sha1 original, que seria algo como

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

Meu caso de uso é que não existem muitas ferramentas de validação de soma de verificação que permitem validar facilmente um manifesto de soma de verificação do tipo md5sum que usa esses valores binários/base64, mas existem muitas ferramentas que validam sha1, então seria ótimo se eu soubesse como reverter esses valores para que eu pudesse escrever um script que gerasse uma lista de hashes mais interoperável.

Responder1

Ambos os valores sãoo mesmo hash– os mesmos bytes “binários” mostrados em duas codificações (representações) diferentes, e nenhum deles é mais “original” que o outro.

(Base64 tem 6 bits por caractere; hexadecimal, também conhecido como base 16, tem 4 bits por dígito. Três bytes brutos, quatro dígitos Base64 e seis dígitos hexadecimais são diretamente conversíveis.)

Quase todas as linguagens de programação terão funções para codificar/decodificar esses formatos. Por exemplo, em ferramentas shell:

  • Para decodificar Base64 em dados binários brutos, use base64 -dou openssl base64 -d.

  • Para codificar dados binários brutos em hexadecimal, use xxd -pou 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..|

informação relacionada