Como posso gerar SHA3 se não houver comando sha3sum no coreutils?

17

Eu tenho sha1sumou sha512sumem uma distribuição Linux média.

Mas onde está o sha3sumcomando que pode gerar comandos SHA-3 ?

pepite
fonte
Em um Linux baseado no Debian, aparentemente faz parte do libdigest-sha3-perlpacote (não testado).
Kusalananda
se o rhash estiver disponível na versão recente o suficiente, por exemplo:rhash --sha3-256
frostschutz
Fazendo-o com SSL unix.stackexchange.com/a/493065/3285
Evan Carroll

Respostas:

12

Existem várias implementações, por exemplo , Mattias Andréesha3sum , ou o módulo Perl Digest-SHA3 . No Debian, instale libdigest-sha3-perl; no Fedora, instale sha3sum; ambos fornecerão um sha3sumcomando baseado no módulo Perl, que se comporta da mesma maneira que os binários com os quais você está acostumado.

Stephen Kitt
fonte
No Debian, o libdigest-sha3-perl está disponível em jessie e mais recente (o que atualmente significa stretch e sid ).
a CVn
Nenhum pacote sha3sum disponível.
pepite
@pepite no Fedora? Qual versão?
Stephen Kitt
@pepite no Fedora, você deve usar o perl-Digest-SHA3pacote rpmfind.net/linux/rpm2html/search.php?query=perl-Digest-SHA1
GAD3R
2
@ GAD3R no Fedora, o pacote apropriado é sha3sum(eu atualizei minha resposta após verificar o sistema Fedora).
Stephen Kitt
6

Você pode usar OpenSSLpara fazer isso. O exemplo abaixo é demonstrado com o OpenSSL 1.1.1 11 de setembro de 2018, a partir do Ubuntu 18.10.

OpenSSL> help
...
Message Digest commands (see the `dgst' command for more details)
blake2b512        blake2s256        gost              md4               
md5               rmd160            sha1              sha224            
sha256            sha3-224          sha3-256          sha3-384          
sha3-512          sha384            sha512            sha512-224        
sha512-256        shake128          shake256          sm3

Então você pode ver que ele suporta sha3-{224,256,384,512}.

Para somar um arquivo,

openssl dgst -sha3-512 /bin/echo
SHA3-512(/bin/echo)= c9a3baaa2aa3d667a4ff475d893b3e84eb588fb46adecd0af5f3cdd735be88c62e179f98dc8275955da4ee5ef1dc7968620686c6f7f63f5b80f10e43bc1f00fc

Você pode somar uma string com

printf "foobar" | openssl dgst -sha3-512

Você também pode alterar o formato de saída

  • -c Imprimir o resumo com dois pontos de separação
  • -r Imprimir o resumo no formato coreutils
Evan Carroll
fonte
3

O aplicativo RHash pode fazer isso:

rhash --sha3-256 yourfile

Mais informações: rhash -h

funcionará no Linux, BSD e Windows

Segunda-feira
fonte
2

Se você é preguiçoso como eu e está acostumado a md5sum, sha1sum, sha256sum:

Crie o arquivo / usr / local / bin / sha3256sum e torne-o executável com chmod + x sha3256sum.

#!/bin/bash
rhash --sha3-256 $1

Então você pode executar:

sha3256sum file
user3559338
fonte
1

Se você opensslinstalou, deve ter o hashalotcomando que diz:

   Supported values for HASHTYPE:
           ripemd160 rmd160 rmd160compat sha256 sha384 sha512

Você também pode usar diretamente o sha384comando

Uma versão suficientemente recente do OpenSSL (1.1.1 ou posterior) tem suporte completo ao SHA-3, openssl helpmostrando:

Message Digest commands (see the `dgst' command for more details)
blake2b512        blake2s256        gost              md4
md5               mdc2              rmd160            sha1
sha224            sha256            sha3-224          sha3-256
sha3-384          sha3-512          sha384            sha512
sha512-224        sha512-256        shake128          shake256
sm3
Patrick Mevzek
fonte
atualizando a pergunta, sha384 é sha2. sha3 não é sha2.
pepite
sim, de verdade, desculpe pelo meu erro. O suporte ao SHA3 in opensslestá planejado / em andamento
Patrick Mevzek
1

Outra alternativa é o sha3sum para Linux, BSD, Windows, Mac, .... Todas as plataformas suportadas pelo Rust.

Para usuários do Rust: cargo install sha3sum

Para pacote Linux x86_64: sistema de compilação aberto

Para os outros: binário para algumas placas

Para mais informações, consulte: Bitbucket

ʕʘ̅͜ʘ̅ʔ
fonte
Bem-vinda! Embora essa seja uma resposta útil, seria melhor se você indicasse que é o autor dessa sha3sumimplementação específica .
Stephen Kitt