এসএসএএচএ একটি লবণযুক্ত SHA-1। ডিফল্টরূপে শেষ 4 বাইট হ'ল লবণ। স্লেপপাসউইডের আউটপুট
'{<Hash Method>}<base64 converted hash and salt>'
সুতরাং পরীক্ষা করার জন্য, কোনও সরল পাঠ্য পাসওয়ার্ড লবণযুক্ত SHA এর সমান কিনা, আপনার এটি করতে হবে:
- উদাহরণস্বরূপ সেড দিয়ে হ্যাশ পদ্ধতি-নির্দিষ্টকরণটি ফালা করুন।
- বেস 64 স্ট্রিং ডিকোড করুন
- সর্বশেষ 4 বাইট বের করুন, এটি লবণ
- প্লেইন টেক্সট পাসওয়ার্ডে লবণের সাথে যুক্ত হওয়া
- এটি হ্যাশ
- তুলনা করা
বেস 64-ডিকোড স্ট্রিংটিতে বাইনারি আকারে হ্যাশ রয়েছে এবং এটি মুদ্রণ করা যায় না, তাই আমরা এটিকে ওকে হেক্সে রূপান্তর করব। প্রথম 3 টি পদক্ষেপ নিম্নলিখিত কোড দ্বারা করা হচ্ছে:
#!/bin/bash
output=$(slappasswd -h {SSHA} -s password)
hashsalt=$( echo -n $output | sed 's/{SSHA}//' | base64 -d)
salt=${hashsalt:(-1),(-4)}
echo $output
echo $(echo -n $hashsalt | od -A n -t x1)
echo "Salt: $salt"
আউটপুট হতে পারে:
{SSHA}fDu0PgKDn1Di9W1HMINpPXRqQ9jTYjuH
7c 3b b4 3e 02 83 9f 50 e2 f5 6d 47 30 83 69 3d 74 6a 43 d8 d3 62 3b 87
<------------------------- Hash --------------------------> <-- Salt-->
Salt: ▒b;▒
সুতরাং এখন আমাদের সরল পাঠ্যের পাসওয়ার্ডের সাথে লবণকে সংশ্লেষ করতে হবে এবং এটি হ্যাশ করতে হবে, এবার লবণ ছাড়াই! আমার যে সমস্যাটি ছিল তা বুঝতে পেরেছিলাম, লবণটি প্রিন্টযোগ্য অক্ষরগুলি সহ সত্যই কোনও চরিত্র হতে পারে। এই অন-মুদ্রণযোগ্য অক্ষরগুলিকে বোঝাতে আমরা প্রিন্টফ এবং তাদের হেক্সাডেসিমাল উপস্থাপনা ব্যবহার করব:
slappasswd -h {SHA} -s $(printf 'password\xd3\x62\x3b\x87') | sed 's/{SHA}//' | base64 -d | od -A n -t x1
আউটপুটটি হ'ল:
7c 3b b4 3e 02 83 9f 50 e2 f5 6d 47 30 83 69 3d 74 6a 43 d8
যা উপরের হ্যাশের সমান। এখন আমরা যাচাই করেছি, সেই 'পাসওয়ার্ড' সল্টেড এসএইচএর সাথে মেলে।
ধন্যবাদ এবং আরও পড়ার জন্য: http://cpansearch.perl.org/src/GSHANK/Crypt- স্যালটেডহ্যাশ-0-0.09 / lib / Crypt / SaltedHash.pm
slappasswd
হ'ল {SSHA HA, বা SHA-1 এর সল্ট সংস্করণ।