Saya mengamati perilaku ini di bawah OpenSSL 1.0.0e pada Ubuntu 11.10, sedangkan OpenSSL 0.9.8k dan 0.9.8t hanya keluaran hash. Baris perintah OpenSSL tidak dirancang untuk menjadi fleksibel, ini lebih merupakan cara cepat dan kotor untuk melakukan perhitungan kriptografi dari baris perintah.
Jika Anda ingin menggunakan OpenSSL, filter output:
echo -n "foo" | openssl dgst -sha1 | sed 's/^.* //'
Di Linux (dengan alat GNU atau BusyBox), Anda dapat menggunakan sha1sum
, yang tidak memerlukan OpenSSL untuk diinstal dan memiliki format output yang stabil. Itu selalu mencetak nama file, jadi cabut itu.
echo -n "foo" | sha1sum | sed 's/ .*//'
Pada sistem BSD termasuk OSX, Anda dapat menggunakan sha1
.
echo -n "foo" | sha1 -q
Semua ini menghasilkan checksum dalam heksadesimal diikuti oleh baris baru. Teks di bawah sistem unix selalu terdiri dari urutan garis, dan setiap baris berakhir dengan karakter baris baru. Jika Anda menyimpan output dari perintah dalam variabel shell, baris akhir terakhir dilucuti.
digest=$(echo -n "foo" | openssl dgst -sha1 | sed 's/^.* //')
Jika Anda perlu menyalurkan input ke program yang membutuhkan checksum tanpa baris akhir final (yang sangat jarang), lepas jalur baru.
echo -n "foo" | openssl dgst -sha1 | sed 's/^.* //' | tr -d '\n' | unusual_program