این موضوع سالها دغدغهی من بوده و تا به الان راهی براش پیدا نکرده بودم. به تازگی راهی براش کشف کردم. بعید نیست که شما خوانندهها خیلی زودتر از من خبردار شده باشین و من عقب بوده باشم.
فرض کنین که چند نفریم و میخواهیم در مورد یک اتفاق در آینده پیشبینیهامون رو ثبت کنیم. مهمه که:
۱. از پیشبینیهای همدیگه باخبر نشیم، چون روی پیشبینیمون تاثیر میگذاره و ممکنه به نوعی ایده بگیریم و ناخواسته تقلب کنیم. یعنی پیشبینیها محرمانه بمونن.
۲. همه قبل از رخ دادن اتفاق، پیشبینیشون رو کرده باشن و ثبت کرده باشن و نتونن تغییر بدن (برای مثال بدونیم که هرکس در چه زمانی پیشبینی کرده، بدون این که از متناش خبردار بشیم).
میشه هرکس متن پیشبینیاش رو در باکس موجود در این لینک وارد کنه، دکمه رو بزنه و اون عدد ۶۴ رقمی رو که بهش میدن به همه نشون بده (این عدد، خروجی «تابع درهمسازی» یا به انگلیسی hash function نوشتهی اصلی است). بعدتر که اتفاق مورد نظر افتاد، هرکس میتونه پیشبینیاش رو رو کنه. برای این که ببینیم حرف کسی عوض نشده باشه، کافیه که متن پیشبینی هرکس رو در این الگوریتم وارد کنیم و کد ۶۴ حرفی رو بگیریم که ببینیم آیا با اون کدی که قبل از اتفاق به همه داده بود یکی هست یا نه.
نکتهی مهم این تابع درهم سازی اینه که با دونستن عدد، در عمل ناممکنه که بتونیم متن اصلی رو پیدا کنیم (مگر این که تمام نوشتههای ممکن رو امتحان کنیم). از طرف دیگه با دونستن متن اصلی، میتونیم به سرعت بررسی کنیم که آیا خروجی برابر با اون عدد از قبل اعلام شده میشه یا نه. هم خروجی سریع محاسبه میشه و هم این که خروجی یک نوشتهی ثابت همیشه همین یک عدد خواهد بود.
یک خاصیت این روش اینه که از «من از اولش هم میدونستم»های احتمالی جلوگیری میکنیم!