sha1sum
wyprowadza w formacie heksadecymalnym rzeczywisty sha. Chciałbym zobaczyć wariant zakodowany w standardzie base64. być może jakieś polecenie, które wypisuje wersję binarną, którą mogę potokować, na przykład: echo -n "message" | <some command> | base64
lub jeśli wypisuje ją bezpośrednio, to też jest w porządku.
hashsum
cryptography
base64
ksenoterracid
źródło
źródło
echo foo | openssl dgst -binary -sha1 | base64
jest równoważny i prawdopodobnie najczystszy sposób na zrobienie tego.openssl
z base64 również ma tę zaletę, że polega tylko na jednym narzędziu (ksh: base64: not found
).sha512
, możesz chcieć dodać-A
opcję do ostatecznegoopenssl base64
polecenia, aby zapobiec podzieleniu wynikowego łańcucha na wiele wierszy.echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64
produkuje inny ciąg?echo -n foo
iecho foo
produkują różne ciągi.Ponieważ
sha1sum
nie zapewnia opcji wyjścia binarnego, prawdopodobnie będziesz musiał znaleźć narzędzie, które robi coś przeciwnegood
i potokuje je. Przyjmując sugestię fschmitt do użyciaxxd
z flagami „reverse” i „plain dump” będzie to wyglądać następująco:sha1sum | cut -f1 -d\ | xxd -r -p | base64
źródło
xxd
:)Nie jestem do końca pewien, czy rozumiem, czego chcesz, ale myślę, że powinno działać coś takiego:
Zasadniczo pobieram dane wyjściowe w postaci szesnastkowej, używam,
sed
aby zrobić z nich ciąg ucieczkowych wartości szesnastkowych, a następnie używamecho -en
do echa bajtówbase64
.Możemy potwierdzić, że wynik końcowy odpowiada temu samemu hashowi, wykonując następujące ćwiczenie:
Kontrola wzrokowa wykazuje, że nasza wartość base64 odpowiada oryginalnemu heksowi. Pamiętaj, że jeśli używasz
hexdump
zamiastxxd
być może będziesz musiał nieco pograć z ustawieniami formatu, aby uzyskać oczekiwany wynik.źródło
Perl ma moduł base64 (w podstawowej dystrybucji od 5.7.1).
Jeśli masz
Digest::SHA
moduł (w podstawowej dystrybucji od 5.9.3) lub starszyDigest::SHA1
moduł, możesz wykonać całe obliczenia w perlu. Począwszy od wersji 5.10.1,b64digest
nie wypełnia wyjścia base64; jeśli potrzebujesz wypełnienia, najłatwiejszym sposobem jest użycieMIME::Base64
.źródło
Skrót SHA256 zakodowany w standardzie Base64 stał się ostatnio raczej standardową sumą kontrolną pliku w OpenBSD . Można to zrobić po prostu dodając
-b
opcję do polecenia OpenBSDsha256
(lub sha1, sha512):lub:
źródło