sha1sum
gera um formato codificado hexadecimal do sha real. Gostaria de ver uma variante codificada em base64. possivelmente algum comando que produza a versão binária que eu possa canalizar, assim: echo -n "message" | <some command> | base64
ou se a gera diretamente, tudo bem também.
hashsum
cryptography
base64
xenoterracida
fonte
fonte
echo foo | openssl dgst -binary -sha1 | base64
é equivalente e provavelmente a maneira mais limpa de fazer isso.openssl
do base64 também tem a vantagem de depender apenas de uma ferramenta (ksh: base64: not found
).sha512
, convém adicionar a-A
opção aoopenssl base64
comando final , para evitar a divisão da sequência resultante em várias linhas.echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64
produz uma string diferente?echo -n foo
eecho foo
produzem diferentes strings.Como
sha1sum
não fornece uma opção para saída binária, você provavelmente precisará encontrar um utilitário que faça o opostood
e encaminhe-os. Tomando a sugestão do fschmitt para usarxxd
com os sinalizadores 'reverse' e 'plain dump', ficará assim:sha1sum | cut -f1 -d\ | xxd -r -p | base64
fonte
xxd
para fora :)Não tenho certeza absoluta de que entendi o que você deseja, mas acho que algo como o seguinte deve funcionar:
Basicamente, eu pego a saída hexadecimal, uso
sed
para torná-la uma sequência de valores hexadecimais com escape e, em seguida, usoecho -en
para fazer eco dos bytesbase64
.Podemos confirmar que a saída final corresponde ao mesmo hash com o seguinte exercício:
A inspeção visual mostra que nosso valor base64 corresponde ao hexadecimal original. Observe que se você usar um
hexdump
pouco doxxd
que talvez precise jogar um pouco com as configurações de formato para obter a saída esperada.fonte
O Perl possui um módulo base64 (na distribuição base desde 5.7.1).
Se você possui o
Digest::SHA
módulo (na distribuição base desde 5.9.3) ou oDigest::SHA1
módulo mais antigo , pode fazer todo o cálculo em perl. A partir do perl 5.10.1,b64digest
não preenche a saída base64; se você precisar de preenchimento, a maneira mais fácil é usarMIME::Base64
.fonte
O hash SHA256 codificado em Base64 tornou-se um checksum de arquivo padrão no OpenBSD recentemente. Isso pode ser feito apenas com a
-b
opção de adicionar aosha256
comando do OpenBSD (ou sha1, sha512):ou:
fonte