Używam tego polecenia, aby dać mi wyjście z OpenSSL bez (STDIN) = początek.

openssl x509 -noout -modulus -in certfile.crt | openssl sha1 -binary | xxd -p

Z wyjściem

7857b35259019acc7484201958ac7e622c227b68

Jeśli zmienię openSSL, aby utworzyć Digest Sha256, XXD wydrukuje go na dwie linie

openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -binary | xxd -p

Z wyjściem

b274c19ac31cc7893dc2297804a2ca666fe168d5cd5eb4d4b6c47616bad9
8996

Jak mogę napisać to wyjście na linii?

b274c19ac31cc7893dc2297804a2ca666fe168d5cd5eb4d4b6c47616bad98996

Czy to coś innego, mam zrobić z XXD, że Digest jest dłuższy lub istnieje potrzeba przemieniania go przez inne polecenie, aby uzyskać połączone wyjście?

0
Danie de Jager 28 październik 2020, 10:49

1 odpowiedź

Najlepsza odpowiedź

Jak zwykle jest kilka sposobów. Pierwsze rozwiązanie ogólne, które wszedł do mojego umysłu, jest to:

printf "%s" $( openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -binary | xxd -p )

Oczywiście, jeśli wyjście jest mniejsze niż 256, można użyć xxd -f -c 256, jak podano TSHIONO.

Kolejne rozwiązanie dla tego specjalnego przypadku z openssl byłoby to:

openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -r

Lub

openssl x509 -noout -modulus -in certfile.crt | openssl sha256 -hex

Ale oba nie są dokładnie takie jak wyjście, które chcesz. Ciąg sześciokątny znajduje się na wyjściu, ale wyściełany przed lub po którym może być cut, przez rurociąg do polecenia cut -d" " -f 1 lub cut -d" " -f 2 do usunięcia prefiksu lub postfix.

1
Marco 28 październik 2020, 10:49