Derivar el hash sha1 del valor binario base64 de openssl

Derivar el hash sha1 del valor binario base64 de openssl

Los paquetes de cine digital contienen sumas de verificación en el siguiente formato, como se describeaquí:

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

¿Cómo puedo tomar un valor como IxcfhXNHlw+1bbDFu0kp8KRylpU=y derivar el hash sha1 original, que se vería así?

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

Mi caso de uso es que no existen muchas herramientas de validación de suma de verificación que le permitan validar fácilmente un manifiesto de suma de verificación de tipo md5sum que use estos valores binarios/base64, pero hay muchas herramientas que validan sha1, por lo que sería genial si lo supiera. cómo revertir estos valores para poder escribir un script que genere una lista de hashes más interoperable.

Respuesta1

Ambos valores sonel mismo hash– los mismos bytes "binarios" mostrados en dos codificaciones (representaciones) diferentes, y ninguno es más "original" que el otro.

(Base64 tiene 6 bits por carácter; hexadecimal, también conocido como base-16, tiene 4 bits por dígito. Tres bytes sin formato, cuatro dígitos Base64 y seis dígitos hexadecimales son directamente convertibles).

Casi todos los lenguajes de programación tendrán funciones para codificar/decodificar estos formatos. Por ejemplo, en herramientas de shell:

  • Para decodificar Base64 en datos binarios sin procesar, use base64 -do openssl base64 -d.

  • Para codificar datos binarios sin procesar en hexadecimal, utilice xxd -po 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..|

información relacionada