PDA

View Full Version : سوال: md5 برای هر کاراکتر



m0rt3z@
یک شنبه 14 اردیبهشت 1399, 00:25 صبح
سلام
یه سوال در مورد MD5 دارم
برای هر کاراکتر چند رشته کد MD5 میتونه وجود داشته باشه؟
مثلا برای حرف A فقط و فقط یک رشته کد MD5 میشه تولید کرد یا تعداد بیشتری؟

the king
یک شنبه 14 اردیبهشت 1399, 05:30 صبح
سلام
یه سوال در مورد MD5 دارم
برای هر کاراکتر چند رشته کد MD5 میتونه وجود داشته باشه؟
مثلا برای حرف A فقط و فقط یک رشته کد MD5 میشه تولید کرد یا تعداد بیشتری؟
برای هر داده ورودی مشخصی فقط و فقط یک hash خروجی MD5 بدست میاد، تعدادش به دو تا نمیرسه، همیشه یک دونه است.
اما بر عکسش صدق نمی کنه، بی نهایت داده ورودی متفاوت وجود داره که MD5 شون یکسان ئه.

در نظر بگیرید که روال MD5 بر اساس کاراکتر نیست، اگر ورودی شما یک کاراکتر A است قبل از تحویل دادن به MD5 به آرایه ای از بایت ها تبدیل میشه.
این مساله از این بابت مهم ئه که کاراکتر A در سیستم های متفاوت رشته ای داده متفاوتی داره، فرضا A در ANSI با A در Unicode-16 و A در UTF-8 الزاما داده های یکسانی ندارند و در نتیجه hash ئه MD5 شون هم یکسان نیست. پس اگر دیدید در جایی A خروجی MD5 متفاوتی داشته بخاطر متفاوت بودن سیستم رشته ای است.

MD5 یک داده به عنوان ورودی میگیره و یک داده 128 بیتی به عنوان خروجی تحویل میده. حالا داده ورودی میتونه یک بایت باشه یا یک میلیون بایت باشه.
اگر اون داده ورودی رو هزار بار هم به MD5 تحویل بدید همیشه داده خروجی یکسانی تحویل می گیرید.
اگر داده ورودی چند بایت باشه و ترتیب بایت ها رو برعکس کنید MD5 خروجی اش کلا عوض میشه،
پس MD5 برای ورودی AAAAAA و AAAAAB و BAAAAA شبیه هم نیست و hash خروجی متفاوتی دارن.