Вывести хэш sha1 из двоичного значения base64 openssl

Вывести хэш sha1 из двоичного значения base64 openssl

Пакеты цифрового кино содержат контрольные суммы в следующем формате, как описано ниже.здесь:

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

Как я могу взять значение, например, IxcfhXNHlw+1bbDFu0kp8KRylpU=и вывести исходный хеш sha1, который будет выглядеть примерно так:

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

Мой вариант использования заключается в том, что существует не так много инструментов проверки контрольной суммы, которые легко позволяют проверить манифест контрольной суммы типа md5sum, использующий эти двоичные/base64 значения, но есть много инструментов, которые проверяют sha1, поэтому было бы здорово, если бы я знал, как обратить эти значения, чтобы я мог написать скрипт, который сгенерировал бы более совместимый список хэшей.

решение1

Оба значениятот же хэш– одни и те же «двоичные» байты, показанные в двух разных кодировках (представлениях), и ни одно из них не является более «оригинальным», чем другое.

(Base64 имеет 6 бит на символ; шестнадцатеричная система счисления, также известная как base-16, имеет 4 бита на цифру. Три необработанных байта, четыре цифры Base64, шесть шестнадцатеричных цифр преобразуются напрямую.)

Почти каждый язык программирования будет иметь функции для кодирования/декодирования этих форматов. Например, в shell tools:

  • Чтобы декодировать 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..|

Связанный контент