MD5 128 বিট হয় তবে এটি 32 টি অক্ষর কেন?


95

আমি এমডি 5 সম্পর্কে কিছু ডক্স পড়েছি, এটি বলেছে যে এটির 128 বিট, তবে কেন এটি 32 টি অক্ষর? আমি চরিত্রগুলি গণনা করতে পারি না।

  • 1 বাইট 8 বিট হয়
  • যদি 1 টি অক্ষর 1 বাইট হয়
  • তাহলে 128 বিটগুলি 128/8 = 16 বাইট সঠিক?

সম্পাদনা:

SHA-1 160 বিট উত্পাদন করে, তবে সেখানে কতগুলি অক্ষর রয়েছে?


আপনি যে দস্তাবেজগুলিতে উল্লেখ করেছেন তার লিঙ্ক পোস্ট করতে পারেন?
ডন রবি

@ ডন: দুঃখিত, এটি আমার প্রভাষক নোটস তবে বাআউটফ্রেন্ড আমার প্রশ্নের জবাব দিয়েছে, এবং আমি এটি এখানে পরীক্ষা করে দেখছি: অলৌকিক চিহ্নসমূহ / ওয়েবেটুলস / এমডি 5.পিপি এবং এর সত্যিকারের হেক্সাডেসিমাল চরিত্রগুলি, এটি এখন আমার কাছে আরও বেশি অর্থবোধ করে । আমি তার উত্তরটি সেরা উত্তর হিসাবে ভোট দেব
hash_jr90

আমি মনে করি যে আমার উত্তর এই বিষয়ে অন্য কোনও তুলনায় আরও বিশদে যায়। আপনি যদি কম্পিউটার প্রোগ্রামিংয়ে নতুন হন এবং এই প্রশ্নটি জিজ্ঞাসা করছেন এবং উত্তর চান
ইভান ক্যারল

9
এটি একটি নির্বোধ প্রশ্ন নয়। একসময় আপনি আরও জানতেন না যে কতগুলি এইচএক্স অক্ষর একটি বাইট উপস্থাপন করে।
ডেভিড ক্লেম্পফনার

হ্যাশের বিট দৈর্ঘ্য গণনা করার জন্য অজগর একটি দ্রুত রেখাঙ্কন ((1 << (n*4))-1).bit_length()যেখানে হেক্সাডেসিমালে হ্যাশের দৈর্ঘ্য n
ওয়াউটার

উত্তর:


107

হেক্সডিসিমাল উপস্থাপনা হিসাবে 32 টি চর, বাইট প্রতি 2 টি চর।


4
1 বাইট 255 = ff এর মতো একটি দুই অঙ্কের হেক্সডিসিমাল সংখ্যা দ্বারা প্রতিনিধিত্ব করা হয়।
বৌফ্রেন্ড

4
সুতরাং 1 বাইট 2 টি অক্ষর যার অর্থ 16 বিট 2 অক্ষর তারপর 128/16 = 8. তাই 2 চররের 8 টি = 16 অক্ষরের তখন কি আবশ্যক? 32 কেন?
কোরাই টুগে

15
কারণ প্রতিটি হেক্স অক্ষর 4 বিট দ্বারা প্রতিনিধিত্ব করা যেতে পারে। সুতরাং এটি যদি 128 বিট হয় তবে এটি 128/4 = 32 হেক্স অক্ষর। তবুও প্রতিটি "চর" utf8 বা ascii হিসাবে এনকোড হবে যা হেক্সের উপস্থাপনা আকার 32 * 8 = 256 বিট তৈরি করবে।
গ্যাস্টন সানচেজ

4
এটি একটি সত্যই খারাপ উত্তর। আমার উত্তর এটিতে
ইভান ক্যারল

@ কোরেতুগায় "সুতরাং 1 বাইট 2 টি চার্স যার অর্থ 16 বিট 2 চর হয়" - 1 বাইট! = 16 বিট
ডেভিড ক্লেম্পফনার

36

আমি কয়েকটি পোস্টের উত্তরগুলি সংক্ষিপ্ত করতে চেয়েছিলাম।

প্রথমত, MD5 হ্যাশটিকে একটি চরিত্রের স্ট্রিং হিসাবে নয় তবে একটি হেক্স নম্বর হিসাবে ভাবেন না। সুতরাং, প্রতিটি অঙ্ক হেক্স ডিজিট (0-15 বা 0-এফ) এবং আটটি নয়, চারটি বিট উপস্থাপন করে।

এটি আরও পরে, একটি বাইট বা আট বিট দুটি হেক্স অঙ্ক দ্বারা প্রতিনিধিত্ব করা হয়, যেমন খ ' 1111 1111' = 0xFF= 255

MD5 হ্যাশগুলি দৈর্ঘ্যে 128 বিট এবং সাধারণত 32 হেক্স অঙ্ক দ্বারা প্রতিনিধিত্ব করা হয়।

SHA-1 হ্যাশগুলির দৈর্ঘ্য 160 বিট এবং সাধারণত 40 হেক্স সংখ্যা দ্বারা প্রতিনিধিত্ব করা হয়।

SHA-2 পরিবারের জন্য, আমি মনে করি হ্যাশের দৈর্ঘ্য পূর্ব নির্ধারিত একটি সেট হতে পারে। সুতরাং SHA-512 128 হেক্স সংখ্যা দ্বারা প্রতিনিধিত্ব করা যেতে পারে।

আবার এই পোস্টটি কেবল পূর্ববর্তী উত্তরের উপর ভিত্তি করে।


26

একটি হেক্স্স "চরিত্র" (নিবল) একটি "চরিত্র" থেকে আলাদা

বিট বনাম বাইট, বনাম চরিত্রগুলিতে পরিষ্কার হওয়া।

  • 1 বাইট 8 বিট হয় (আমাদের উদ্দেশ্যে)
  • 8 টি বিট 2**8সম্ভাব্য সংমিশ্রণ সরবরাহ করে: 256 সংমিশ্রণ

যখন আপনি একটি হেক্স্স চরিত্রের দিকে তাকান ,

  • এর 16 টি সংমিশ্রণ [0-9] + [a-f]: এর সম্পূর্ণ পরিসীমা0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
  • 16 256 এর চেয়ে কম, সুতরাং একটি হেক্স অক্ষর একটি বাইট সঞ্চয় করে না
  • ১ is টি 2**4: এর অর্থ একটি হেক্স অক্ষর একটি বাইটে (অর্ধেক বাইট) 4 বিট সংরক্ষণ করতে পারে।
  • অতএব, দুটি হেক্স অক্ষর, 8 বিট, 2**8সংমিশ্রণ সংরক্ষণ করতে পারে ।
  • একটি বাইট প্রতিনিধিত্ব হিসাবে একটি হেক্স চরিত্র [0-9a-f][0-9a-f]এবং যে একটি বাইট উভয় halfs প্রতিনিধিত্ব করে (আমরা একটি অর্ধ-বাইট একটি কল মৃদু কামড় )।

আপনি যখন নিয়মিত একক-বাইট চরিত্রটি দেখুন, (আমরা সম্পূর্ণরূপে এখানে মাল্টি-বাইট এবং প্রশস্ত অক্ষরগুলি এড়াতে যাচ্ছি)

  • এটি 16 টিরও বেশি কম্বিনেশন সঞ্চয় করতে পারে।
  • চরিত্রের ক্ষমতাগুলি এনকোডিং দ্বারা নির্ধারিত হয় উদাহরণস্বরূপ, আইএসও 8859-1 যা একটি সম্পূর্ণ বাইট সঞ্চয় করে, এই সমস্ত স্টাফ সঞ্চয় করে
  • সমস্ত স্টাফ পুরো 2**8ব্যাপ্তি নেয় ।
  • যদি কোনও হেক্স-চরিত্র md5()সমস্ত কিছু সঞ্চয় করতে পারে তবে আপনি সমস্ত ছোট হাতের অক্ষর, সমস্ত বড় হাতের অক্ষর, সমস্ত বিরামচিহ্ন এবং ¡°ÀÐàðহোয়াইটস্পেসের মতো জিনিস (নিউলাইনস এবং ট্যাবগুলি) এবং নিয়ন্ত্রণ অক্ষরগুলি দেখতে পাবেন (যা আপনি ' এমনকি দেখতে পাবেন এবং এর বেশিরভাগ ব্যবহারে নেই)।

সুতরাং তারা স্পষ্টভাবে পৃথক এবং আমি আশা করি যে পার্থক্যগুলির সেরা ব্রেক ডাউন প্রদান করে।


4
এটি "কোন ক্রমে আসলে অনুমান বা প্ল্যাটফর্ম নির্ভর" এর অর্থ কী? এটি আরও কিছুটা ব্যাখ্যা করতে পছন্দ করবেন।
কুমারএম

@ কুমার আমি এটিকে মুছতে চলেছি কারণ আমি মনে করি না এটি আসলে কথোপকথনের সাথে মোটেই প্রাসঙ্গিক এবং এটি খারাপভাবে শব্দযুক্ত।
ইভান ক্যারল

22

MD5 হেক্সাডেসিমাল ডিজিট (0-15 / 0-F) দেয়, তাই এগুলি প্রতিটি বিট হয়। 128/4 = 32 টি অক্ষর।

SHA-1 হেক্সাডেসিমাল অঙ্কগুলিও খুব বেশি (0-15 / 0-F) দেয়, তাই 160/4 = 40 টি অক্ষর।

(যেহেতু তারা গাণিতিক ক্রিয়াকলাপ, বেশিরভাগ হ্যাশিং ফাংশনগুলির আউটপুট সাধারণত হেক্স ডিজিট হিসাবে উপস্থাপিত হয়))

আপনি সম্ভবত ASCII পাঠ্য অক্ষরের কথা ভাবছিলেন, যা 8 টি বিট।


আপনাকে অনেক ধন্যবাদ .. আমার মাথায় এখন আরও অনেক পরিষ্কার ছবি আছে !!
hash_jr90

দ্রষ্টব্য: ascii-charset- এ মুদ্রণযোগ্য চিহ্ন রয়েছে।
রায় লি

আমি এটি আরও কিছুটা স্পষ্টভাবে ভাঙার চেষ্টা করেছি stackoverflow.com/a/41618070/124486
ইভান ক্যারল


2

সেগুলি হেক্সিডিসিমাল ডিজিট, অক্ষর নয়। এক অঙ্ক = 4 বিট।



2

একটি হেক্স ডিজিট = 1 স্তনবৃন্ত (চার বিট)

দুটি হেক্স ডিজিট = 1 বাইট (আট বিট)

MD5 = 32 হেক্স সংখ্যা

32 হেক্স ডিজিট = 16 বাইট (32/2)

16 বাইট = 128 বিট (16 * 8)

40 টি হেক্স ডিজিট দীর্ঘ না বাদে একই রকম SHA-1 এ প্রযোজ্য।

আশা করি এটা কাজে লাগবে.

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