- شروع کننده موضوع
- #121
tiberium
کاربر فوقحرفهای
- ارسالها
- 1,057
- امتیاز
- 1,052
- نام مرکز سمپاد
- شهید بهشتی سمنان
- شهر
- سمنان
- سال فارغ التحصیلی
- 1389
- مدال المپیاد
- المپیاد کامپیوتر
- دانشگاه
- صنعتی شریف
- رشته دانشگاه
- مهندسی فن آوری اطلاعات
آره آفرین. حالا من خیلی با جزییات کامل نخوندم ولی کلیتش ایدش درستهفکر کنم یافتم
ببین فرض کنیم که آلیس و باب قبلا روی یک تابع هش خاص توافق کردن
آلیس یک عدد درست (بدون اعشار و بیشتر از یک) انتخاب می کنه در ذهنش(اسمش رو میذاریم A)
و باب هم یک عدد درست انتخاب میکنه در ذهنش (اسمش رو میذاریم B)
باب به آلیس B رو میگه
بعد آلیس سکه رو میندازه
یا شیر میاد یا خط (مثلا برای شیر عدد S رو در نظر میگیریم و برای خط K رو و این موضوع رو هر دو طرف می دونن)
حالا اگه شیر اومد
آلیس هش این عدد رو میگیره SAB
یا اگه خط اومد
KAB
بعد این عدد رو به باب میگه و بعد از باب میخواد که بگه شیر اومده یا خط
حالا باب یک کدوم رو میگه (یا شیر یا خط)
و آلیس یا تایید میکنه
یا تکذیب
بعد از این
...
باب از آلیس عددش رو (که همون A باشه) میپرسه
حالا باید جواب آلیس رو چک کنه
پس این بار باب هش میگیره!
باید جواب هش باب با جواب هش آلیس یکی بشه تا باب بفهمه که آلیس قبلا راست گفته و واقعا درصد جواب درست ۵۰ ۵۰ بوده ...
پ.ن: هش چقدر چیز به درد بخوریه! یه تابعه که نمیشه معکوسش کرد و خلاصه خیلی باحاله!!
پ.ن۲: ممنون از توضیح کاملت @tiberium
حتی کوتاه ترم میشه. فرض کنید من سکه میندازم. و از اول باهم طی می کنیم که متن ورودی من نتیجه آزمایش، یک خط تیره و بعد یه عدد رندم هست. مثلا KHAT-124221 یا مثلا SHIR-826251
بعد من میام سکه رو میندازم. و بعد یه عدد رندوم انتخاب می کنم و هش این رو میگیرم و برات میفرستم!!! ولی از رو این نمیدونی جواب چیه. حالا میپرسم تو میگی شیر یا خط؟ و تو میگی مثلا خط. بعد من میگم عدد رندم من اینه( مثلا 241 ) و جواب آزمایش هم مثلا خط بوده. حالا تو میای هش KHAT-241 رو حساب می کنی. اگر با چیزی که قبلا برات فرستاده بودم یکیه یعنی حرفم درسته
حالا یه امکان تقلبی هست. من باید بتونم با همون هش یه ورودی دیگه به صورت SHIR-randnum پیدا کنم ( یه عدد رندم دیگه به عبارتی پیدا کنم که با تغییر جواب آزمایش بازم هش یکسان بشه ). ولی این از لحاظ محاسباتی سخت هست و امکان پذیر نیست!