ক্লাইমে কীভাবে আমি একটি বেস 64 এনকোডেড শ্যাক্স পেতে পারি?


32

sha1sumপ্রকৃত শে এর একটি হেক্সস এনকোডযুক্ত ফর্ম্যাটটিকে আউটপুট দেয়। আমি একটি বেস 64 এনকোডেড ভেরিয়েন্টটি দেখতে চাই। সম্ভবত কিছু কমান্ড যা বাইনারি সংস্করণকে আমি পাইপ করতে পারি echo -n "message" | <some command> | base64তার ফলাফলকে আউটপুট করে : অথবা যদি এটি সরাসরি আউটপুট দেয় তবে তাও ঠিক আছে।

উত্তর:


41

যদি আপনার ওপেনএসএসএল থেকে কমান্ড লাইন ইউটিলিটি থাকে তবে এটি বাইনারি আকারে একটি ডাইজেস্ট তৈরি করতে পারে এবং এটি বেস 64 এও অনুবাদ করতে পারে (পৃথক প্রার্থনায়)।

echo -n foo | openssl dgst -binary -sha1 | openssl base64

1
echo foo | openssl dgst -binary -sha1 | base64সমতুল্য, এবং সম্ভবত এটি করার সবচেয়ে পরিষ্কার উপায়।
xenoterracide

3
opensslবেস 64 এর পাশাপাশি ব্যবহার করার ক্ষেত্রে কেবলমাত্র একটি সরঞ্জাম ( ksh: base64: not found) এর উপর নির্ভর করে সুবিধা রয়েছে ।
গিলস 'তাই মন্দ হওয়া বন্ধ করুন'

2
বৃহত্তর বার্তা হজমের মতো হ্যাশগুলির sha512জন্য , ফলস্বরূপ স্ট্রিংটিকে একাধিক লাইনে বিভক্ত করা রোধ করতে আপনি -Aচূড়ান্ত openssl base64কমান্ডের বিকল্প যুক্ত করতে চাইতে পারেন ।
মাইখাল

@ গিলস কেন echo foo > somefile; cat somefile | openssl dgst -binary -sha1 | openssl base64একটি পৃথক স্ট্রিং উত্পাদন করে?
জর্জি্লিয়াটসোস

@gliatsos কারণ echo -n fooএবং echo fooবিভিন্ন স্ট্রিং উত্পাদন করে।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

16

যেহেতু sha1sumবাইনারি আউটপুট জন্য কোনও বিকল্প সরবরাহ করে না আপনি সম্ভবত একটি ইউটিলিটি খুঁজে বের করতে হবে যা এর বিপরীত হয় odএবং সেগুলি পাইপ করে। xxd'রিভার্স' এবং 'প্লেইন ডাম্প' ফ্ল্যাগগুলির সাথে ব্যবহার করার জন্য এফএসমিট দ্বারা পরামর্শ গ্রহণ করা এটি এর মতো দেখাবে:

sha1sum | cut -f1 -d\ | xxd -r -p | base64


4
-Rp পতাকা সহ xxd ব্যবহার করুন। এটি পছন্দ করুন: sha1sum somefile.txt | কাট -f1 -d \ | xxd -r -p | বেস 64
fschmitt

@fschmitt: আমার উত্তর পোস্ট করার আগে আমার এই মন্তব্যটি পড়া উচিত ছিল, এটি অনেক বেশি পরিস্কার। আপনার এটি উত্তর হিসাবে পোস্ট করা বিবেচনা করা উচিত। আমি এটির জন্য ভোট দিয়েছি
স্টিভেন ডি

এটি আরও অ্যালেক্স উত্তর, আমি কেবল "হেক্স বাইনারি ইউনিক্স রূপান্তর" গুগল করেছি, তাই অ্যালেক্স, এক্সএক্সডি কল অন্তর্ভুক্ত করার জন্য আপনার উত্তরটি সম্পাদনা করতে নির্দ্বিধায় অনুভব করুন এবং আমরা এটিকে ভোট দেব।
fschmitt

আমার উত্তর সম্পাদনা। দেখানোর জন্য ধন্যবাদ xxd:)
অলেক্স

অসাধারণ! Httpd.apache.org/docs/2.4/misc/password_encryptions.html যা এই পদক্ষেপের প্রয়োজনীয়তার কথা উল্লেখ করে না
phil294

1

আপনি কী চান তা আমি বুঝতে পেরেছি বলে আমি পুরোপুরি নিশ্চিত নই, তবে আমি মনে করি নিম্নলিখিতগুলির মতো কিছু কাজ করা উচিত:

$ 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আপনার প্রত্যাশিত আউটপুট পেতে আপনাকে কিছুটা ফর্ম্যাট সেটিংস খেলতে হতে পারে।


1

পারেলের একটি বেস 64 মডিউল রয়েছে (5.7.1 সাল থেকে বেস বিতরণে)।

echo foo | sha1sum | \
perl -MMIME::Base64 -ne '/^([[:xdigit:]]+)/ and print encode_base64(pack("H*",$1))'

আপনার যদি Digest::SHAমডিউল (৫.৯.৩ থেকে বেস ডিস্ট্রিবিউশনে) থাকে বা পুরানো Digest::SHA1মডিউলটি থাকে তবে আপনি পারলে পুরো গণনাটি করতে পারেন। পার্ল 5.10.1 হিসাবে, b64digestবেস 64 আউটপুট প্যাড করে না; আপনার যদি প্যাডিংয়ের প্রয়োজন হয় তবে সবচেয়ে সহজ উপায় হ'ল ব্যবহার করা MIME::Base64

perl -MDigest::SHA -e 'print Digest::SHA->new(1)->addfile(*STDIN)->b64digest'
perl -MMIME::Base64 -MDigest::SHA \
     -le 'print encode_base64(Digest::SHA->new(1)->addfile(*STDIN)->digest)'

ভাল যদি আমরা পার্ল ব্যবহার করে থাকি তবে আমরা কেবল ডাইজেস্ট :: এসএএ মডিউলটি ব্যবহার করতে পারি যা আমাদের সরাসরি বেস 64 এ আউটপুট দেওয়ার অনুমতি দেয়।
xenoterracide

0

বেস64 64 এনকোডেড SHA256 হ্যাশ সম্প্রতি ওপেনবিএসডি-তে বরং স্ট্যান্ডার্ড ফাইলের চেকসামে পরিণত হয়েছে .. এটি কেবল -bওপেনবিএসডি'র sha256(বা sha1, sha512) কমান্ডটিতে বিকল্প যুক্ত করেই করা যেতে পারে :

$ FILE=/dev/null
$ sha256 -q -b $FILE
47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=

বা:

$ cksum -q -a sha256b $FILE
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.