Slappasswd আউটপুট এলোমেলোভাবে


10

আমি slappasswdএকটি স্থির হ্যাশ উত্পাদনের প্রত্যাশা করছিলাম তবে দেখা যাচ্ছে যে একই ইনপুট পাসওয়ার্ডের জন্য আমি কখনই একই আউটপুট পাই না বলে আউটপুটটি এলোমেলোভাবে তৈরি হয়:

$ slappasswd -s secret
{SSHA}mCXsPZkfgQYZr2mKHpy5Iav+2S2XlVU3
$ slappasswd -s secret
{SSHA}62oXsalJBuopYfHhi6hGp6AESuWNIVnd
$ slappasswd -s secret
{SSHA}0Ulc8+ugMi3NbTtWnclOFW1LKCqRdsT8

প্রমাণীকরণের সময়, স্ল্যাপড কীভাবে জানে যে সরবরাহ করা পাসওয়ার্ডের জন্য হ্যাশটিকে একইভাবে র্যান্ডমাইজ করতে হয় যাতে এটি প্রথম স্থানে সংজ্ঞায়িত পাসওয়ার্ডটির সাথে মেলে?

উত্তর:


8

এখানে একটি অঙ্গ নিয়ে বাইরে যাচ্ছেন তবে আমি ধরে নিয়েছি slappasswd একটি সরল হ্যাশের পরিবর্তে একটি সল্ট হ্যাশ ব্যবহার করছে। এর অর্থ এটি আপনার পাসওয়ার্ডে একটি এলোমেলো উপসর্গ যুক্ত করে এবং স্ল্যাপপ্যাসউইড আউটপুটে আপনি দেখেন স্ট্রিংয়ের অংশ হিসাবে সেই র্যান্ডম উপসর্গটি সংরক্ষণ করে। আপনি যখন নিজের পাসওয়ার্ডটি টাইপ করেন, এটি এতে উপসর্গ যুক্ত করে, ফলাফলটি হ্যাশ করে এবং স্লাপপ্যাসউইড আউটপুটটিতে স্ট্রিংয়ের সাথে তুলনা করে। যদি এটি মেলে তবে আপনি ভিতরে।


3
প্রকৃতপক্ষে. বিশেষত, এর জন্য ডিফল্ট হ্যাশ পদ্ধতিটি slappasswdহ'ল {SSHA HA, বা SHA-1 এর সল্ট সংস্করণ।
জাস্টারোবার্ট

আমি সম্মত, তবে আমার প্রশ্নটি রয়ে গেছে: যদি হ্যাশের অংশ হিসাবে লবণ শেষ হয়ে যায় যার অর্থ আপনি হ্যাশ পাসওয়ার্ড থেকে লবণটি বের করতে পারবেন না। তদনুসারে কীভাবে স্লাপড জানে যে পাসওয়ার্ড যাচাই করার সময় কোন লবণ যুক্ত করতে হবে? (এটি হ্যাশ পাসওয়ার্ডের জন্য একই লবণ যুক্ত করতে হবে)।
সর্বোচ্চ

3
@ ব্যবহারকারী: অংশটির পরে লবণ এবং হ্যাশ উভয়ই{SSHA} থাকে ।
ব্যবহারকারী1686

8

এসএসএএচএ একটি লবণযুক্ত SHA-1। ডিফল্টরূপে শেষ 4 বাইট হ'ল লবণ। স্লেপপাসউইডের আউটপুট

'{<Hash Method>}<base64 converted hash and salt>'

সুতরাং পরীক্ষা করার জন্য, কোনও সরল পাঠ্য পাসওয়ার্ড লবণযুক্ত SHA এর সমান কিনা, আপনার এটি করতে হবে:

  1. উদাহরণস্বরূপ সেড দিয়ে হ্যাশ পদ্ধতি-নির্দিষ্টকরণটি ফালা করুন।
  2. বেস 64 স্ট্রিং ডিকোড করুন
  3. সর্বশেষ 4 বাইট বের করুন, এটি লবণ
  4. প্লেইন টেক্সট পাসওয়ার্ডে লবণের সাথে যুক্ত হওয়া
  5. এটি হ্যাশ
  6. তুলনা করা

বেস 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

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