1

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

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

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

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

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

1 ответ1

1

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .