
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 -d
ouopenssl base64 -d
.Para codificar dados binários brutos em hexadecimal, use
xxd -p
ouhexdump
.
$ 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..|