টুল
গাইড

সল্ট ও র‍্যান্ডম টোকেন জেনারেটর

ক্রিপ্টো

crypto.getRandomValues ব্যবহার করে ক্রিপ্টোগ্রাফিকভাবে নিরাপদ র‍্যান্ডম সল্ট ও টোকেন হেক্স বা Base64-এ তৈরি করুন।

100% ক্লায়েন্ট-সাইড কোনো ব্যাকএন্ড নেই
এই পৃষ্ঠায়

সল্ট কী?#

একটি সল্ট হলো এলোমেলো ডেটার একটি টুকরো যা আপনি একটি হ্যাশিং প্রক্রিয়ায় মেশান যাতে দুটি অভিন্ন ইনপুট ভিন্ন আউটপুট তৈরি করে। এর কাজ হলো অদ্বিতীয়তা, গোপনীয়তা নয়: একটি সল্ট তার সুরক্ষিত হ্যাশের পাশে প্লেইন টেক্সটে বসতে পারে, এবং এটি এখনও সেই আক্রমণকে পরাস্ত করে যা একই পাসওয়ার্ড সহ প্রতিটি ব্যবহারকারীর একই ডাইজেস্টে হ্যাশ হওয়ার উপর নির্ভর করে। একবার প্রতিটি পাসওয়ার্ডের নিজস্ব সল্ট হলে, একজন আক্রমণকারী সম্পূর্ণ ডেটাবেস জুড়ে একটি পূর্ব-গণনা করা টেবিল পুনরায় ব্যবহার করতে পারে না — তাদের প্রতিটি এন্ট্রির জন্য পুনরায় গণনা করতে হবে।

এই পৃষ্ঠাটি crypto.getRandomValues দিয়ে ক্রিপ্টোগ্রাফিকভাবে শক্তিশালী এলোমেলো বাইট তৈরি করে এবং সেগুলোকে তিনটি এনকোডিংয়ে আপনার হাতে তুলে দেয়: hex (প্রতি বাইটে দুটি অক্ষর, পাসওয়ার্ড সল্ট এবং অখণ্ডতা টোকেনের রীতি), base64 (আরও কম্প্যাক্ট), এবং base64url (URL- এবং ফাইলনাম-নিরাপদ ভেরিয়েন্ট যা +//-কে -/_ দিয়ে বিনিময় করে এবং = প্যাডিং বাদ দেয়, JWT এবং স্বাক্ষরিত URL-এ ব্যবহৃত)।

একই আদিমটি একটি সাধারণ-উদ্দেশ্য্য এলোমেলো-টোকেন জেনারেটর হিসেবেও কাজ করে: API কী, nonce মান, অস্বচ্ছ ID, এবং এককালীন টোকেন সবাই হলো “কিছু এলোমেলো বাইট, টেক্সট হিসেবে এনকোড করা”, যা ঠিক এটি তৈরি করে।

ব্যবহারবিধি#

  1. বাইট-এর সংখ্যা সেট করুন। 16 (128 বিট) এর ডিফল্ট হলো মানক সল্ট আকার; ফিল্ডটি আপনার যখন একটি দীর্ঘতর টোকেন প্রয়োজন তখন 8192 পর্যন্ত গ্রহণ করে।
  2. একটি ফরম্যাট বেছে নিন: হেক্স, Base64, বা Base64url।
  3. তৈরি ক্লিক করুন, তারপর কপি। স্ট্যাটাস লাইন দেখায় ফলাফলটি কতগুলো বিট এনট্রপি উপস্থাপন করে (বাইট × 8), যাতে আপনি এক নজরে নিশ্চিত করতে পারেন যে আপনি যা চেয়েছিলেন তা পেয়েছেন।

মূল বৈশিষ্ট্য#

  • নিরপেক্ষ এলোমেলো বাইট। crypto.getRandomValues থেকে উৎসিত, ব্রাউজারের ক্রিপ্টোগ্রাফিকভাবে শক্তিশালী জেনারেটর।
  • তিনটি এনকোডিং। সল্ট এবং চেকসামের জন্য hex; কম্প্যাক্ট টোকেনের জন্য base64; URL, ফাইলনাম, বা JSON-এ চলাচলকারী যেকোনো কিছুর জন্য base64url।
  • সৎ এনট্রপি রিপোর্টিং। স্ট্যাটাস লাইন এনকোড করা স্ট্রিংয়ের দৈর্ঘ্যের বদলে প্রকৃত বিট গণনা বলে, যা ভুল পড়া সহজ।
  • 8192 বাইট পর্যন্ত। একই টুল একটি 16-বাইট সল্ট এবং একটি 256-বাইট কী দলায় পরিষেবা দেয়।
  • শূন্য আপলোড। জেনারেশন স্থানীয়; এলোমেলো বাইটগুলো কখনো প্রেরণ করা হয় না।

ব্যবহারিক উদাহরণ#

তিনটি ফরম্যাটের প্রতিটিতে 16 বাইট তৈরি করুন। একটি 16-বাইট টান হলো 128 বিট এনট্রপি, এবং এনকোড করা দৈর্ঘ্যগুলো এলোমেলো মান নির্বিশেষে নির্দিষ্ট:

  • হেক্স — 32 অক্ষর, যেমন 7a4c9f1e0b8d2635c4a1e9f07b2d4861
  • Base64 — == প্যাডিং সহ 24 অক্ষর, যেমন 8MDwarqMD7B594C5hCB1zQ==
  • Base64url — 22 অক্ষর, প্যাডিং ছিন্ন, যেমন 8MDwarqMD7B594C5hCB1zQ

(উপরের মানগুলো আকৃতি চিত্রিত করে; আপনার প্রকৃত আউটপুট প্রতিটি ক্লিকে ভিন্ন কারণ বাইটগুলো নতুন এলোমেলো।) একটি 256-বিট সল্ট বা কী-র জন্য 32 বাইট-এ উন্নীত করুন এবং দৈর্ঘ্যগুলো নির্ধারকভাবে বড় হয়: 64 hex অক্ষর, 44 base64 অক্ষর, 43 base64url অক্ষর। বাইট গণনা এবং এনকোড করা দৈর্ঘ্যের মধ্যে সেই নির্দিষ্ট সম্পর্কটি একটি দ্রুত উপায় সমীক্ষা করার যে আপনি যা উদ্দেশ্য করেছিলেন সেই আকার তৈরি করেছেন।

প্রশ্নোত্তর#

একটি সল্ট কি গোপন হতে হবে?#

না। একটি সল্টের উদ্দেশ্য হলো অদ্বিতীয়তা — এটি নিশ্চিত করে যে একই পাসওয়ার্ড দুবার হ্যাশ করলে ভিন্ন ডাইজেস্ট হয়। এটি হ্যাশের পাশে প্লেইন টেক্সটে সংরক্ষণ করা হয়, এবং তা স্কিমটিকে দুর্বল করে না। যে জিনিসটি অবশ্যই গোপন থাকতে হবে তা হলো HMAC-এ কী বা এনক্রিপশনে পাসওয়ার্ড, সল্ট নয়।

আমি কতগুলো বাইট তৈরি করব?#

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

base64 এবং base64url-এর মধ্যে পার্থক্য কী?#

উভয়ই একই বাইট এনকোড করে, কিন্তু base64 + এবং / ব্যবহার করে, যা URL এবং ফাইলনাম ভাঙে, এবং = দিয়ে প্যাড করে। base64url সেগুলোকে - এবং _ দিয়ে প্রতিস্থাপন করে এবং প্যাডিং বাদ দেয়, তাই ফলাফলটি এস্কেপ ছাড়াই সরাসরি একটি URL পাথ, একটি কোয়েরি স্ট্রিং, বা একটি ফাইলনামে ফেলে দেওয়া যায়। JWT, স্বাক্ষরিত URL, এবং অস্বচ্ছ টোকেনের জন্য base64url ব্যবহার করুন; প্লেইন base64 ব্যবহার করুন যখন আউটপুট ডেটা ফিল্ডের ভেতরে থাকে।

আমি কি এটি একটি API কী হিসেবে ব্যবহার করতে পারি?#

হ্যাঁ। base64url-এ 32 বাইট তৈরি করুন এবং আপনার কাছে 256 বিট এনট্রপি সহ একটি 43-অক্ষরের টোকেন আছে — একটি API কী বা একটি দীর্ঘ-স্থায়ী bearer টোকেনের জন্য অনেক বেশি। শুধু নিশ্চিত করুন যে তা অবিলম্বে কপি করুন, কারণ মানটি স্থানীয়ভাবে তৈরি এবং পরে পুনরুদ্ধার করা যাবে না।