Làm cách nào để tạo SHA3 nếu không có lệnh sha3sum trong coreutils?


17

Tôi có sha1sumhoặc sha512sumtrên một bản phân phối Linux trung bình.

Nhưng đâu là sha3sumlệnh có thể tạo lệnh SHA-3 ?


Trên Linux dựa trên Debian, nó dường như là một phần của libdigest-sha3-perlgói (chưa được thử nghiệm).
Kusalananda

nếu rhash có sẵn trong phiên bản đủ gần đây thì vdrhash --sha3-256
frostschutz 24/2/2017

Câu trả lời:


12

Có một số triển khai, ví dụ như Mattias Andréesha3sum , hoặc mô-đun Perl Digest-SHA3 . Trong Debian, cài đặt libdigest-sha3-perl; trong Fedora, cài đặt sha3sum; cả hai sẽ cung cấp một sha3sumlệnh dựa trên mô-đun Perl, hoạt động giống như các nhị phân mà bạn đã sử dụng.


Trong Debian, libdigest-sha3-perl có sẵn trong jessie và mới hơn (hiện có nghĩa là kéo dàisid ).
CVn

Không có gói sha3sum có sẵn.
pepite

@pepite trên Fedora? Phiên bản nào?
Stephen Kitt

@pepite trong Fedora, bạn nên sử dụng perl-Digest-SHA3gói rpmfind.net/linux/rpm2html/search.php?query=perl-Digest-SHA1
GAD3R

2
@ GAD3R trong Fedora gói thích hợp là sha3sum(Tôi đã cập nhật câu trả lời của mình sau khi kiểm tra trên hệ thống Fedora).
Stephen Kitt

6

Bạn có thể sử dụng OpenSSLđể làm điều này, Dưới đây được trình bày với OpenSSL 1.1.1 11 tháng 9 năm 2018, từ 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

Vì vậy, bạn có thể thấy nó hỗ trợ sha3-{224,256,384,512}.

Để kiểm tra một tập tin,

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

Bạn có thể kiểm tra một chuỗi với

printf "foobar" | openssl dgst -sha3-512

Bạn cũng có thể thay đổi định dạng đầu ra

  • -c In các bản tóm tắt bằng dấu hai chấm
  • -r In các bản tóm tắt ở định dạng coreutils


3

Ứng dụng RHash có thể làm điều đó:

rhash --sha3-256 yourfile

Thêm thông tin: rhash -h

nó sẽ hoạt động trên Linux, BSD và Windows


2

Nếu bạn lười như tôi và đã quen với md5sum, sha1sum, sha256sum:

Tạo tập tin / usr / local / bin / sha3256sum và làm cho nó có thể thực thi được với chmod + x sha3256sum.

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

Sau đó, bạn có thể chạy:

sha3256sum file

1

Nếu bạn đã opensslcài đặt, bạn nên có hashalotlệnh:

   Supported values for HASHTYPE:
           ripemd160 rmd160 rmd160compat sha256 sha384 sha512

Bạn cũng có thể sử dụng trực tiếp sha384lệnh.

Một phiên bản đủ gần đây của OpenSSL (1.1.1 trở lên) có hỗ trợ SHA-3 đầy đủ, openssl helpsẽ hiển thị:

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

cập nhật câu hỏi, sha384 là sha2. sha3 không phải là sha2.
pepite

vâng, thực sự xin lỗi vì sai lầm của tôi Hỗ trợ cho SHA3 trong opensslkế hoạch / trong công việc: github.com/openssl/openssl/issues/439
Patrick Mevzek

1

Một cách khác là sha3sum cho Linux, BSD, Windows, Mac, .... Tất cả các nền tảng được Rust hỗ trợ.

Đối với người dùng Rust: cargo install sha3sum

Đối với gói Linux x86_64: Hệ thống xây dựng mở

Đối với những người khác: Nhị phân cho một số tấm

Để biết thêm thông tin, hãy xem: Bitbucket


Chào mừng bạn Mặc dù đây là một câu trả lời hữu ích, nhưng sẽ tốt hơn nếu bạn chỉ ra rằng bạn là tác giả của việc sha3sumtriển khai cụ thể này .
Stephen Kitt
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.