কিভাবে আমরা একটি প্রদত্ত ইনপুট বিন্যাস স্ট্রিং জন্য হ্যাশ প্রথম বাইট জানতে পারি?

বিটকয়েন ডেভেলপার ওয়ালেট গাইডে, মিনি প্রাইভেট কী ফরম্যাট সম্পর্কে কথা বলার সময়, যখন তারা ব্যাখ্যা করে যে ফর্ম্যাট কীভাবে কাজ করে, তারা কয়েকটি ধাপ বর্ণনা করে:

  1. মিনি কী-এর প্রথম অক্ষর হল ‘S’।

  2. মিনি প্রাইভেট কী ভালোভাবে ফরম্যাট করা হয়েছে কিনা তা নির্ধারণ করতে প্রাইভেট কী-তে একটি প্রশ্ন চিহ্ন যুক্ত করা হয়।

  3. SHA256 হ্যাশ গণনা করা হয়। যদি উত্পাদিত প্রথম বাইটটি `00′ হয় তবে এটি ভালভাবে বিন্যাসিত হয়। এই মূল সীমাবদ্ধতা একটি টাইপো-চেকিং প্রক্রিয়া হিসাবে কাজ করে। একটি ভাল ফর্ম্যাট করা মিনি প্রাইভেট কী তৈরি না হওয়া পর্যন্ত একজন ব্যবহারকারী ব্রুট এলোমেলো সংখ্যা ব্যবহার করে প্রক্রিয়াটিকে জোর করে।

  4. সম্পূর্ণ ব্যক্তিগত কী পেতে, ব্যবহারকারী কেবলমাত্র মূল মিনি ব্যক্তিগত কীটির একটি SHA256 হ্যাশ নেয়। এই প্রক্রিয়াটি একমুখী: উদ্ভূত কী থেকে মিনি প্রাইভেট কী বিন্যাস গণনা করা কঠিন।

আমি যা বুঝতে পারছি না তা হল ধাপ 1 এবং 2 ধাপ 3 এর সাথে মিলিত, যদি একটি হ্যাশ ফাংশন যেমন sha256 অপরিবর্তনীয় হয়, অর্থাৎ, এর আউটপুট দেওয়া হলে আমরা এর ইনপুট অনুমান করতে পারি না, এটি কীভাবে সম্ভব? আমরা কি একটি ব্যক্তিগত কী জানি? ‘s’ দিয়ে শুরু হয় এবং যেটিতে আমরা একটি প্রশ্ন চিহ্ন যোগ করেছি, এর ফলে একটি হ্যাশ আসবে যা ’00’ বাইট দিয়ে শুরু হবে?

লোকেরা কি একটি ইনপুট বিন্যাস বের করতে পারে যে এটি নির্দিষ্ট অবস্থানে নির্দিষ্ট অক্ষরকে আউটপুট করবে?

এটি কি হ্যাশের একটি সুবিধা নয় যে ইনপুটে একটি ন্যূনতম পরিবর্তন পুরো আউটপুটকে পরিবর্তন করবে?

কিভাবে কেউ নিশ্চিত হতে পারে যে ধাপ 1 এবং 2 এর সাথে, আপনি ’00’ বাইট পাবেন, যা বাম হ্যাশ ইনপুট অক্ষরগুলিতে কোনো পরিবর্তন করা হলে সম্পূর্ণ অদলবদল হবে?

Source link

Leave a Comment