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

1

Os Pacotes de cinema digital contêm somas de verificação no seguinte formato, conforme descrito aqui :

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

Como posso obter um valor como IxcfhXNHlw+1bbDFu0kp8KRylpU= e derivar o hash sha1 original, que seria parecido com

$ 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 use esses valores binários / base64, mas há muitas ferramentas que validam sha1, então seria ótimo se eu soubesse como reverter esses valores para poder escrever um script que geraria uma lista de hashes mais interoperável.

    
por Tandy Freeman 04.04.2018 / 19:27

1 resposta

1

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

(Base64 tem 6 bits por caractere; hexadecimal aka base-16 tem 4 bits por dígito. Três bytes brutos, quatro dígitos Base64, 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, nas ferramentas de shell:

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

  • Para codificar dados binários brutos em hexadecimal, use xxd -p ou 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..|
    
por 04.04.2018 / 19:39