Wenn Sie diesen Befehl auf Ihrem Unix ausführen
echo -n "foo" | openssl dgst -sha1
Sie erhalten diese Ausgabe:
(stdin)= 0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33
(gefolgt von einer neuen Zeile).
Wie kann ich erzwingen (stdin)=
, dass openssl das Präfix nicht anzeigt, und die nachfolgende Newline vermeiden?
Antworten:
Das binäre Rohformat fügt keine externen Ausgaben hinzu.
Als Binärdatei ausgeben und dann in Hex umwandeln:
Wird dir folgendes geben:
Diese Methode sollte zukunftssicher sein, falls sich jemand entscheidet, das Textausgabeformat erneut zu ändern. Ich bin sicher, sie werden das Präfix auf "SHA1 (stdin) =" setzen, um mit dem einer Dateieingabe übereinzustimmen.
Ich kann nicht glauben, dass sie das geändert haben! Ich frage mich, wie viele Skripte kaputt waren.
quelle
-c 256
Option, um die Länge auf 256 Bytes pro Zeile zu erweitern.Ich beobachte dieses Verhalten unter OpenSSL 1.0.0e unter Ubuntu 11.10, während OpenSSL 0.9.8k und 0.9.8t nur den Hash ausgeben. Die Befehlszeile von OpenSSL ist nicht flexibel, sondern eher eine schnelle und unkomplizierte Methode, um kryptografische Berechnungen über die Befehlszeile durchzuführen.
Wenn Sie OpenSSL verwenden möchten, filtern Sie die Ausgabe:
Unter Linux (mit GNU-Tools oder BusyBox) können Sie
sha1sum
OpenSSL verwenden , das keine Installation erfordert und ein stabiles Ausgabeformat aufweist. Es wird immer ein Dateiname gedruckt, also entfernen Sie diesen.Auf BSD-Systemen einschließlich OSX können Sie verwenden
sha1
.Alle diese geben die Prüfsumme hexadezimal gefolgt von einer neuen Zeile aus. Text unter Unix-Systemen besteht immer aus einer Folge von Zeilen, und jede Zeile endet mit einem Zeilenumbruch. Wenn Sie die Ausgabe des Befehls in einer Shell-Variablen speichern, wird der letzte Zeilenumbruch entfernt.
Wenn Sie die Eingabe in ein Programm umleiten müssen, für das eine Prüfsumme ohne letzte Newline erforderlich ist (was sehr selten vorkommt), entfernen Sie die Newline.
quelle
Hier ist eine andere Alternative:
quelle
Hier ist eine Möglichkeit, wie Sie Bash-Built-Ins anstelle von Pipes, awk, sed, tr, cut usw. verwenden können:
quelle