ما به یک روند عددی نیاز داریم که
از یک طرف راحت
و از طرف دیگر سخت است.
همین ما را با حسابهای مدولار،
شناخته شده به حسابهای ساعتی روبرو می کند
مثلا، برای پیدا کردنباقیمانده ی تقسیم
۴۶ بر ۱۲، طنابی به اندازه ۴۶ بر میداریم
و آن را دور ساعتی با ۱۲ عدد
که مدل نامیده می شود می پیچیم
جایی که طناب تمام میشود جواب مسئله است
پس میگوییم
باقیمانده ۴۶ بر ۱۲ برابر است با ۱۰
بسیار راحت. حالا، برای اینکه این کار کند،
مدلی که عدد اول باشد،
مانند ۱۷، را استفاده میکنیم
سپس یک ریشه اولیه آن را،
در این مورد ۳، پیدا میکنیم
که این ویژگی مهم را دارد
که هنگامی که به توان برسد
جواب به طور یکنواخت دور ساعت توزیع میشود
۳ به عنوان ژنراتور شناخته شده است،
اگر ۳ را به توان هر x برسانیم
جواب با احتمالهای مساوی میتواند
بین ۰ تا ۱۷ باشد.
حالا، روند برعکس این سخت است.
مثلا، با داشتن عدد ۱۲، عددی که ۳ باید
به توان آن برسد را پیدا کنید
این لگاریتم گسسته نام دارد
حالا ما تابع یک طرفه را داریم
راحت در اجرا و سخت در برعکس کردن
با داشتن ۱۲، باید یا آزمون و خطا
توان مناسب را پیدا کنیم
این چقدر سخت است؟
با اعداد کوچک سخت نیست
اما اگر عدد اول ما هزاران رقم باشد
حل آن غیرعملی می شود
حتی اگر به تمام قدرتهای کامپیوتری
روی زمین دسترسی داشتید،
این میتوانست صدها سال طول بکشد
تا تمام احتمالات بررسی شود
پس، قدرت یک تابع یکطرفه به زمانی است
که برای عکس کردن آن لازم است.