单向函数的强度取决于反向过程所需要的时间
即便是借助地球上最强大的计算机
要遍历所有可能情况也需要上千年时间
那么想解密是不切实际的
我们需要一种朝一方向易朝反方向难的数值过程
于是我们找到了模算术 它也叫作时钟算术
比如 要求46除以12的余数
我们可以取一根长46单位的绳子
将其缠绕在12单位的时钟周围 12也就是模数
绳子终止的地方也就是答案
因此记作46 mod 12 ≡ 10
很简单
下面 我们考虑用质数做模数 比如17
我们找到17的一个原根 这里也就是3
它具有如下重要性质 取不同幂次时
结果会在时钟上均匀分布
3是一个生成元
取3的x次方
结果等可能地出现在0和17中间任何整数上
但相反的过程就难了
比如 给定12 要求这是3的多少次方
这被称为离散对数问题
这样我们就有了单向函数
一个方向很容易 但反向就很难了
已知12 我们只能采用试错法 求出匹配的指数
这有多难呢
如果数字很小 这还很容易
但模数若是长达数百位的质数