sha1sum
gibt ein hexadezimal codiertes Format des tatsächlichen sha aus. Ich würde gerne eine Base64-codierte Variante sehen. Möglicherweise gibt ein Befehl die Binärversion aus, die ich per Pipe ausgeben kann: echo -n "message" | <some command> | base64
oder wenn er sie direkt ausgibt, ist das auch in Ordnung.
hashsum
cryptography
base64
Xenoterracid
quelle
quelle
echo foo | openssl dgst -binary -sha1 | base64
ist gleichwertig und wahrscheinlich die sauberste Art, dies zu tun.openssl
für base64 hat den Vorteil, dass nur ein Tool erforderlich ist (ksh: base64: not found
).sha512
möchten Sie möglicherweise-A
dem endgültigenopenssl base64
Befehl eine Option hinzufügen , um zu verhindern, dass die resultierende Zeichenfolge in mehrere Zeilen aufgeteilt wird.echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64
wird eine andere Zeichenfolge erstellt?echo -n foo
undecho foo
verschiedene Saiten produzieren.Schon seit
sha1sum
es keine Option für die Binärausgabe gibt, müssen Sie wahrscheinlich ein Hilfsprogramm finden, das das Gegenteil von tutod
und sie weiterleitet. Wenn fschmitt vorschlägt,xxd
mit 'reverse' und 'plain dump' Flags zu arbeiten, sieht es so aus:sha1sum | cut -f1 -d\ | xxd -r -p | base64
quelle
xxd
:)Ich bin nicht ganz sicher, ob ich verstehe, was Sie wollen, aber ich denke, Folgendes sollte funktionieren:
Grundsätzlich nehme ich die hexadezimale Ausgabe, verwende sie
sed
, um eine Zeichenfolge mit Escapezeichen für hexadezimale Werte zu erstellen, und verwende sie dann,echo -en
um die Bytes wiederzugebenbase64
.Mit der folgenden Übung können wir bestätigen, dass die endgültige Ausgabe demselben Hash entspricht:
Eine Sichtprüfung zeigt, dass unser base64-Wert mit dem ursprünglichen Hex übereinstimmt. Beachten Sie, dass Sie, wenn Sie die
hexdump
Formateinstellungen verwendenxxd
, möglicherweise ein wenig mit ihnen spielen müssen, um die erwartete Ausgabe zu erzielen.quelle
Perl hat ein base64-Modul (in der Basisdistribution seit 5.7.1).
Wenn Sie das
Digest::SHA
Modul (in der Basisdistribution seit 5.9.3) oder das ältereDigest::SHA1
Modul haben, können Sie die gesamte Berechnung in Perl durchführen. Füllt ab Perl 5.10.1b64digest
die base64-Ausgabe nicht auf. Wenn Sie eine Polsterung benötigen, verwenden Sie diese am einfachstenMIME::Base64
.quelle
Base64-codierter SHA256-Hash wurde in letzter Zeit eher zur Standard-Prüfsumme für Dateien in OpenBSD . Dies kann einfach durch Hinzufügen einer
-b
Option zum OpenBSD-sha256
Befehl (oder sha1, sha512) erfolgen:oder:
quelle