Bcrypt হ্যাশ ও যাচাই

পাসওয়ার্ডের জন্য salted bcrypt হ্যাশ তৈরি করুন এবং বিদ্যমান হ্যাশের বিপরীতে প্লেইনটেক্সট যাচাই করুন, সব আপনার ব্রাউজারে।

পাসওয়ার্ডের জন্য salted bcrypt হ্যাশ তৈরি করুন এবং বিদ্যমান হ্যাশের বিপরীতে প্লেইনটেক্সট যাচাই করুন, সব আপনার ব্রাউজারে। পাসওয়ার্ডের জন্য salted bcrypt হ্যাশ তৈরি করুন এবং বিদ্যমান হ্যাশের বিপরীতে প্লেইনটেক্সট যাচাই করুন, সব আপনার ব্রাউজারে।

তৈরি হওয়া bcrypt হ্যাশ

পটভূমি

bcrypt কী এবং কেন এটি গুরুত্বপূর্ণ

bcrypt হলো Niels Provos এবং David Mazieres 1999 সালে নকশা করা একটি অভিযোজিত পাসওয়ার্ড হ্যাশিং ফাংশন। MD5 বা SHA-256 এর মতো দ্রুত ডাইজেস্ট থেকে ভিন্ন, bcrypt ইচ্ছাকৃতভাবে CPU সময় খরচ করে: প্রতিটি হ্যাশ Blowfish সাইফারকে একটি কনফিগারযোগ্য সংখ্যক রাউন্ডে চালায়, এবং কস্ট ফ্যাক্টরের প্রতিটি বৃদ্ধিতে কাজ দ্বিগুণ হয়। এই ধীরগতিই অফলাইন ডিকশনারি এবং ব্রুট-ফোর্স আক্রমণকে ব্যয়বহুল করে তোলে। একটি সঠিক bcrypt বাস্তবায়ন আউটপুট স্ট্রিংয়ের ভিতরে একটি র্যান্ডম 128-বিট সল্টও এমবেড করে, তাই একই পাসওয়ার্ডের দুটি হ্যাশ সবসময় ভিন্ন হয় এবং রেইনবো টেবিল এর বিরুদ্ধে অকেজো।

bcrypt হ্যাশ কীভাবে পড়বেন

একটি bcrypt হ্যাশ দেখতে এরকম $2b$12$e0.6kJ8a5X8u5Yp3qR5E0e9dF4z3W2c1v0b9n8m7l6k5j4h3g2f1। ডলার চিহ্নের পরের অংশগুলো অ্যালগরিদম সংস্করণ, কস্ট এবং সল্ট বহন করে:

  • $2b$ -- অ্যালগরিদম সংশোধন। $2a$ এবং $2y$ হল পুরনো সংস্করণ যেখানে 8-বিট সাইন বাগের জন্য সূক্ষ্ম পার্থক্য রয়েছে; $2b$ বর্তমান সুপারিশ এবং bcryptjs যা নির্গত করে।
  • 12 -- কস্ট ফ্যাক্টর। 2^12 = 4096 রাউন্ড কী শিডিউল। প্রতিটি +1 সময় দ্বিগুণ করে; 10-12 ইন্টারঅ্যাকটিভ লগইনের জন্য যুক্তিসঙ্গত ডিফল্ট, যখন 12-14 সংরক্ষিত ক্রেডেনশিয়ালের জন্য উপযুক্ত।
  • অবশিষ্ট 53টি অক্ষরে একটি 22-অক্ষরের (128-বিট) base64 সল্ট এবং একটি 31-অক্ষরের (184-বিট) চেকসাম থাকে। পুরো স্ট্রিংটি একটি স্বয়ংসম্পূর্ণ রেকর্ড: যাচাইকারী হ্যাশ থেকে সংস্করণ, কস্ট এবং সল্ট পড়ে বের করে এবং তুলনা করার জন্য ডেরিভেশন পুনরায় চালায়।

এই টুলটি কীভাবে ব্যবহার করবেন

ইনপুটে একটি পাসওয়ার্ড টাইপ করুন, একটি কস্ট ফ্যাক্টর বেছে নিন এবং Hash টিপুন। তৈরি হ্যাশ আউটপুট বক্সে দেখা যায় এবং verify ফিল্ডেও রাখা হয়। একটি বিদ্যমান হ্যাশ পরীক্ষা করতে, এটি verify ফিল্ডে পেস্ট করুন এবং ইনপুটে প্রার্থী পাসওয়ার্ড টাইপ করুন: পৃষ্ঠাটি সাথে সাথে তুলনা করে একটি সবুজ টিক বা লাল ক্রস দেখায়। যেহেতু তুলনা bcrypt.compareSync দিয়ে করা হয়, এটি কখনো প্রকাশ করে না একটি ভুল অনুমান কতটা কাছাকাছি ছিল -- ফলাফল নির্ধারণের আগে প্রতিটি চেষ্টা সম্পূর্ণ হ্যাশ করা হয়।

নিরাপত্তা নোট ও সীমাবদ্ধতা

bcrypt ইনপুটকে ৭২ বাইটে ছাঁটাই করে: দীর্ঘ পাসওয়ার্ড নীরবে কাটা হয়, তাই প্রথম ৭২ বাইট ভাগ করা দুটি পাসওয়ার্ড সমানভাবে তুলনা হয়। যদি দীর্ঘ ইনপুট প্রয়োজন হয়, আগে SHA-256 (হেক্স-এনকোডেড) দিয়ে প্রি-হ্যাশ করুন এবং সেই ডাইজেস্টটি bcrypt করুন। bcrypt একটি ইচ্ছাকৃতভাবে মেমরি-লাইট অ্যালগরিদম -- এটি Argon2 বা scrypt এর মতো মেমরি-হার্ড নকশার তুলনায় GPU অ্যারে প্রতিরোধে কম ভালো, তবে এর 4 KB টেবিল এবং 64-বাইট স্টেট সস্তা ASIC ক্র্যাকিংকে অলাভজনক রাখে। ব্র্যান্ড-নিউ সিস্টেমের জন্য Argon2id প্রায়ই ভালো পছন্দ; লিগ্যাসি সামঞ্জস্য এবং রানটাইম Argon2 সরবরাহ করতে পারে না এমন ক্ষেত্রে bcrypt একটি চমৎকার, ব্যাপকভাবে সমর্থিত বিকল্প হিসেবে রয়ে যায়। এই পৃষ্ঠাটি সম্পূর্ণ আপনার ব্রাউজারে চলে: পাসওয়ার্ড এবং হ্যাশ কখনো আপনার ডিভাইস ছাড়ে না, এবং আপনি public/assets-এ বান্ডল করা কোড পাথ (MIT/BSD bcryptjs) পরিদর্শন করতে পারেন।

BSD-3-Clause bcryptjs লাইব্রেরি দিয়ে তৈরি যা public/assets এ বান্ডল করা। হ্যাশিং স্থানীয়ভাবে চলে; কিছুই প্রেরণ করা হয় না।

সচরাচর জিজ্ঞাসিত প্রশ্ন

একই পাসওয়ার্ড কেন প্রতি বার ভিন্ন হ্যাশ তৈরি করে?
প্রতিটি হ্যাশের জন্য একটি র্যান্ডম 128-বিট সল্ট তৈরি হয় এবং আউটপুটে এমবেড হয়। যাচাইকারী হ্যাশ থেকে সল্ট পুনরায় পড়ে, তাই সঠিকতা প্রভাবিত হয় না, কিন্তু অভিন্ন ইনপুট কখনো অভিন্ন আউটপুট দেয় না।
কোন কস্ট ফ্যাক্টর ব্যবহার করা উচিত?
ইন্টারঅ্যাকটিভ লগইনের জন্য 10-12 একটি ভালো ডিফল্ট। সংরক্ষিত ক্রেডেনশিয়ালের জন্য আপনি 12-14 চাইতে পারেন। উচ্চতর কস্ট নিরাপদ কিন্তু ধীর; আপনার সার্ভার প্রতি লগইনে যতটা সামর্থ্য রাখে তত বড় মান বেছে নিন।
2026 সালে কি bcrypt এখনও সুপারিশ করা হয়?
হ্যাঁ। bcrypt এখনও ব্যাপকভাবে ব্যবহৃত এবং 10+ কস্টে নিরাপদ হিসেবে বিবেচিত। ব্র্যান্ড-নিউ সিস্টেমের জন্য মেমরি-হার্ড Argon2id বা scrypt প্রায়ই পছন্দ করা হয়, তবে bcrypt একটি চমৎকার, যুদ্ধ-পরীক্ষিত পছন্দ, বিশেষ করে যেখানে সেগুলো অনুপলব্ধ।
bcrypt SHA-256 এর চেয়ে ধীর কেন?
এটাই আসল বিষয়। SHA-256 দ্রুত হওয়ার জন্য নকশা করা, যা আক্রমণকারীদের প্রতি সেকেন্ডে বিলিয়ন অনুমান চেষ্টা করতে দেয়। bcrypt-এর ব্যয়বহুল কী শিডিউল এবং সল্ট আক্রমণকারীদের প্রতি অনুমানে প্রকৃত সময় খরচ করতে বাধ্য করে, অফলাইন আক্রমণ অসম্ভব করে তোলে।
72-বাইট সীমা আমার পাসওয়ার্ডের জন্য কী বোঝায়?
bcrypt ৭২ নম্বর বাইটের পরের সবকিছু উপেক্ষা করে। ৭২ বাইটের বেশি দীর্ঘ দুটি পাসওয়ার্ড যার একই প্রিফিক্স আছে অভিন্নভাবে যাচাই হবে। দীর্ঘ গোপন সমর্থন করতে, সেগুলো আগে SHA-256 দিয়ে (হেক্স হিসেবে) হ্যাশ করুন এবং ডাইজেস্ট bcrypt করুন।
আমার পাসওয়ার্ড কি সার্ভারে পাঠানো হয়?
না। সবকিছু বান্ডল করা bcryptjs লাইব্রেরি দিয়ে আপনার ব্রাউজারে স্থানীয়ভাবে চলে। পৃষ্ঠা লোড হওয়ার পরে আপনি নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করতে পারেন এবং এটি এখনও কাজ করবে।