在密码学的学习过程中费马小定理Fermat’s Little Theorem是一个极其重要的基础工具尤其在 RSA 加密算法的理解和证明中扮演核心角色。本文将通过一道实际题目展示如何利用该定理快速求解一个看似复杂的大指数模运算问题。题目回顾已知素数 p65537p65537计算27324678765465536 mod 6553727324678765465536mod65537表面上看这是一个指数巨大、底数也很大的模幂运算若直接计算几乎不可能但我们只需要掌握费马小定理就能在几秒内得出答案。费马小定理回顾费马小定理内容如下若 pp 是素数且整数 aa 不是 pp 的倍数则ap−1≡1(modp)ap−1≡1(modp)这个定理的奇妙之处在于它将一个巨大的指数简化为了 1只要指数恰好是 p−1p−1 的倍数或者更准确地说我们可以利用指数模 p−1p−1 的余数来化简计算。应用到本题本题中素数 p65537p65537那么p−165536p−165536这正是题目中给出的指数值。因此我们只需要判断底数 273246787654273246787654 是否与模数 6553765537 互质即是否可被 6553765537 整除。判断互质性底数 273246787654273246787654 明显远大于 6553765537我们可以估算65537×4,000,000262,148,000,00065537×4,000,000262,148,000,00065537×4,170,000273,289,290,00065537×4,170,000273,289,290,000而我们的底数是 273,246,787,654273,246,787,654介于两者之间因此不是整除关系。更精确地计算 273246787654 mod 65537273246787654mod65537 我们可以快速验证它不为 0比如用模运算性质或者直接注意到 65537 是一个费马数而该底数并不等于其倍数。因此底数与模数互质。直接应用定理既然底数 aa 满足 gcd⁡(a,p)1gcd(a,p)1根据费马小定理我们有a65536≡1(mod65537)a65536≡1(mod65537)因此27324678765465536 mod 65537127324678765465536mod655371答案就是 1。更进一步的思考这道题的目的不仅在于考察定理本身还在训练我们观察指数与 p−1p−1 的关系。如果是任意指数比如 6553765537 或 6553865538那么我们就需要先将指数对 6553665536 取模再计算这才是更一般情况下的处理方式。另外这个思想在 RSA 解密过程中非常关键。RSA 中解密公式m≡cd(modn)m≡cd(modn)利用的正是欧拉定理费马小定理的推广其中 dd 的选择就依赖于 φ(n)φ(n)而 φ(p)p−1φ(p)p−1 对于素数情形来说正是这里用到的核心。小结本题的解答过程说明了一个重要原则数学工具能极大减少计算复杂度。在没有定理的情况下我们要算 65536 次乘法既耗时又容易出错而用费马小定理只需要一次简单的互质判断结果便呼之欲出。对于密码学初学者来说熟练掌握费马小定理及其推广欧拉定理是理解公钥密码算法的基础之一。而像这样的练习题正是将抽象理论具象化的最佳方式。