আপনি কী চান তা আমি বুঝতে পেরেছি বলে আমি পুরোপুরি নিশ্চিত নই, তবে আমি মনে করি নিম্নলিখিতগুলির মতো কিছু কাজ করা উচিত:
$ echo -ne "$(echo -n "message" | sha1sum | cut -f1 -d" " | sed -e 's/\(.\{2\}\)/\\x\1/g')" | base64
মূলত, আমি হেক্স আউটপুট নিই, sed
এটিকে পলায়নযোগ্য হেক্স মানগুলির স্ট্রিং তৈরি করতে ব্যবহার করি এবং তারপরে echo -en
বাইটগুলি প্রতিধ্বনিত করতে ব্যবহার করি base64
।
আমরা নিশ্চিত করতে পারি যে চূড়ান্ত আউটপুট নিম্নলিখিত অনুশীলনের সাথে একই হ্যাশের সাথে সম্পর্কিত s
$ echo -n "message" | sha1sum
6f9b9af3cd6e8b8a73c2cdced37fe9f59226e27d -
$ echo -ne "$(echo -n "message" | sha1sum | cut -f1 -d" " | sed -e 's/\(.\{2\}\)/\\x\1/g')" | base64
b5ua881ui4pzws3O03/p9ZIm4n0=
$ echo -n "b5ua881ui4pzws3O03/p9ZIm4n0=" | base64 -d | xxd
0000000: 6f9b 9af3 cd6e 8b8a 73c2 cdce d37f e9f5 o....n..s.......
0000010: 9226 e27d .&.}
ভিজ্যুয়াল পরিদর্শন দেখায় যে আমাদের বেস 64 মানটি মূল হেক্সের সাথে মেলে। মনে রাখবেন যে আপনি যদি hexdump
তার চেয়ে বেশি ব্যবহার করেন তবে xxd
আপনার প্রত্যাশিত আউটপুট পেতে আপনাকে কিছুটা ফর্ম্যাট সেটিংস খেলতে হতে পারে।
echo foo | openssl dgst -binary -sha1 | base64
সমতুল্য, এবং সম্ভবত এটি করার সবচেয়ে পরিষ্কার উপায়।