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