sha1sum
выводит шестнадцатеричный код фактического ша. Я хотел бы видеть кодированный base64 вариант. возможно какая-нибудь команда, которая выводит двоичную версию, которую я могу передать, например, так: echo -n "message" | <some command> | base64
или если она выводит ее напрямую, это тоже хорошо.
hashsum
cryptography
base64
xenoterracide
источник
источник
echo foo | openssl dgst -binary -sha1 | base64
эквивалентно, и, вероятно, самый чистый способ сделать это.openssl
для base64 также имеет то преимущество, что зависит только от одного инструмента (ksh: base64: not found
).sha512
вы можете добавить-A
опцию к последнейopenssl base64
команде, чтобы предотвратить разбиение полученной строки на несколько строк.echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64
получается другая строка?echo -n foo
иecho foo
производят разные строки.Так
sha1sum
как не предоставляет опцию для двоичного вывода, вам, вероятно, потребуется найти утилиту, которая делает противоположное,od
и направить их. Принимая предложение от fschmitt использоватьxxd
флаги 'reverse' и 'plain dump', это будет выглядеть так:sha1sum | cut -f1 -d\ | xxd -r -p | base64
источник
xxd
вне :)Я не совсем уверен, что понимаю, чего вы хотите, но я думаю, что-то вроде следующего должно работать:
По сути, я беру шестнадцатеричный вывод, использую
sed
для создания строки экранированных шестнадцатеричных значений, а затем используюecho -en
для вывода байтов вbase64
.Мы можем подтвердить, что окончательный результат соответствует тому же хешу с помощью следующего упражнения:
Визуальный осмотр показывает, что наше значение base64 соответствует исходному гексу. Обратите внимание, что если вы используете,
hexdump
а неxxd
вам, возможно, придется немного поиграть с настройками формата, чтобы получить ожидаемый результат.источник
Perl имеет модуль base64 (в базовом выпуске начиная с 5.7.1).
Если у вас есть
Digest::SHA
модуль (в базовом выпуске начиная с 5.9.3) или более старыйDigest::SHA1
модуль, вы можете выполнить все вычисления в perl. Начиная с perl 5.10.1,b64digest
не дополняет вывод base64; если вам нужно заполнить, проще всего использоватьMIME::Base64
.источник
Хэш SHA256 в кодировке Base64 в последнее время стал довольно стандартной контрольной суммой файла в OpenBSD . Это можно сделать, просто добавив
-b
опцию в команду OpenBSDsha256
(или sha1, sha512):или:
источник