Bu davranışı Ubuntu 11.10'daki OpenSSL 1.0.0e altında gözlemlerken, OpenSSL 0.9.8k ve 0.9.8t çıktı sadece hash. OpenSSL'nin komut satırı esnek olarak tasarlanmamıştır, komut satırından kriptografik hesaplamalar yapmak için hızlı ve kirli bir yöntemdir.
OpenSSL kullanmak istiyorsanız, çıktıyı filtreleyin:
echo -n "foo" | openssl dgst -sha1 | sed 's/^.* //'
Linux'ta (GNU araçları veya BusyBox ile), sha1sum
OpenSSL'in kurulmasını gerektirmeyen ve kararlı bir çıktı formatına sahip olan kullanabilirsiniz. Her zaman bir dosya adı yazdırır, bu yüzden soyun.
echo -n "foo" | sha1sum | sed 's/ .*//'
OSX içeren BSD sistemlerinde kullanabilirsiniz sha1
.
echo -n "foo" | sha1 -q
Bunların hepsi sağlama toplamını onaltılık olarak takip eder ve ardından yeni bir satır yazar. Unix sistemleri altındaki metin her zaman bir dizi diziden oluşur ve her satır yeni satır karakteriyle sonlanır. Komutun çıktısını bir kabuk değişkeninde saklarsanız, son satırsonu çıkarılır.
digest=$(echo -n "foo" | openssl dgst -sha1 | sed 's/^.* //')
Girişi, son satırsonu olmayan (gerçekten nadir olan) bir sağlama toplamı gerektiren bir programa aktarmanız gerekirse, satırsonunu çıkarın.
echo -n "foo" | openssl dgst -sha1 | sed 's/^.* //' | tr -d '\n' | unusual_program