sha1sum
menghasilkan format hex yang dikodekan dari sha yang sebenarnya. Saya ingin melihat varian encoding base64. mungkin beberapa perintah yang menampilkan versi biner yang dapat saya pipirkan, seperti: echo -n "message" | <some command> | base64
atau jika ia mengeluarkannya secara langsung juga tidak masalah.
hashsum
cryptography
base64
xenoterracide
sumber
sumber
echo foo | openssl dgst -binary -sha1 | base64
adalah setara, dan mungkin cara terbersih untuk melakukan ini.openssl
untuk base64 juga memiliki keuntungan tergantung hanya pada satu alat (ksh: base64: not found
).sha512
, Anda mungkin ingin menambahkan-A
opsi keopenssl base64
perintah akhir , untuk mencegah pemisahan string yang dihasilkan menjadi beberapa baris.echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64
menghasilkan string yang berbeda?echo -n foo
danecho foo
menghasilkan string yang berbeda.Karena
sha1sum
tidak memberikan opsi untuk keluaran biner, Anda mungkin perlu menemukan utilitas yang melakukan kebalikanod
dan menyalurkannya. Mengambil saran dari fschmitt untuk digunakanxxd
dengan flag 'reverse' dan 'dump polos' akan terlihat seperti ini:sha1sum | cut -f1 -d\ | xxd -r -p | base64
sumber
xxd
:)Saya tidak sepenuhnya yakin saya mengerti apa yang Anda inginkan, tetapi saya pikir sesuatu seperti berikut ini akan berfungsi:
Pada dasarnya, saya mengambil output hex, gunakan
sed
untuk membuatnya menjadi string nilai-nilai hex yang lolos, dan kemudian gunakanecho -en
untuk menggemakan byte menjadibase64
.Kami dapat mengkonfirmasi bahwa hasil akhir sesuai dengan hash yang sama dengan latihan berikut:
Inspeksi visual menunjukkan bahwa nilai base64 kami cocok dengan hex asli. Perhatikan bahwa jika Anda menggunakan
hexdump
daripadaxxd
mungkin Anda harus bermain dengan pengaturan format sedikit untuk mendapatkan output yang Anda harapkan.sumber
Perl memiliki modul base64 (dalam distribusi dasar sejak 5.7.1).
Jika Anda memiliki
Digest::SHA
modul (dalam distribusi dasar sejak 5.9.3), atauDigest::SHA1
modul yang lebih lama , Anda dapat melakukan seluruh perhitungan dalam perl. Pada perl 5.10.1,b64digest
tidak mendukung output base64; Jika Anda perlu melapisi, cara termudah adalah menggunakanMIME::Base64
.sumber
Base64 mengkodekan hash SHA256 menjadi checksum file yang agak standar di OpenBSD baru-baru ini .. Ini dapat dilakukan hanya dengan menambahkan
-b
opsi ke perintah OpenBSDsha256
(atau sha1, sha512):atau:
sumber