
Пакеты цифрового кино содержат контрольные суммы в следующем формате, как описано ниже.здесь:
$ 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..|