用快速幂和 BigInt 计算 a 的 b 次方 mod m,同时给出模逆和平方乘法分步,全程浏览器本地
- 本地处理
- 分类 开发运维
- 适合 格式化、校验、压缩或检查和代码相关的文本。
基于 BigInt 的平方乘法,对超大模数也精确。所有计算只在你本地浏览器内进行。
这个工具能做什么
一个把 (底数^指数) mod 模数 算到精确的模幂运算计算器,数字长到 几百位也照样准。它用平方乘法(快速幂)算法,所以像 65537 这样的 指数大约 17 次平方就跑完,而不是乘 65537 次,每一步中间值都先对 m 取模,体积始终不膨胀。全程跑在 JavaScript BigInt 上,这就是为什么 4^13 mod 497 正好落在 445,7^256 对一个 100 位质数取模也能给出 正确余数而不丢精度。工具还用扩展欧几里得算法求模逆,这让它在底数 与模数互质时能算负指数,另有一个可选的分步视图,把每次平方都打出来, 方便你顺着指数的每一位看清过程。这正是 RSA、Diffie-Hellman 密钥 交换和 Miller-Rabin 素性测试核心的那一步运算。输入会写进网址, 分享链接能还原同一次计算,结果一键复制。全部在浏览器本地完成, 不上传任何数据。
工具细节
- 输入
- 表单输入
- 页面会根据工具类型展示文本框、数值控件、文件选择或结构化输入。
- 输出
- 即时结果 + 复制
- 结果区优先给出可操作结果,支持项会显示复制、下载或可视化预览。
- 隐私
- 浏览器本地处理
- 主工具逻辑未发现外部 API 调用,输入通常留在当前标签页内处理。
- 保存 / 分享
- 可分享链接状态
- 关键设置会进入 URL,复制链接后别人能复现同一组参数。
- 性能预算
- 首屏 JS ≤ 9 KB
- 没有声明 WASM 依赖,适合快速打开和移动端使用。
- 适用场景
- 开发运维 · 程序员
- 分类和职业标签用于推荐相关工具、组织内链,并帮助用户快速判断是否适合当前任务。
怎么用
-
1. 输入
把内容粘贴或拖入工具面板。
-
2. 处理
点击按钮,在浏览器内本地处理,文件不上传。
-
3. 复制 / 下载
一键复制结果或下载到本地。
模幂运算计算器 适合怎么用
适合穿插在写代码、查问题、做 Review、上线前的小任务里。
适合开发场景
- 格式化、校验、压缩或检查和代码相关的文本。
- 把片段整理好再放进文档、工单、提交或交接材料。
- 不切换工具,快速检查一个小 payload。
开发检查项
- 压缩、混淆这类不可逆处理,先对副本操作。
- 除非确认工具本地处理,不要粘贴密钥和敏感片段。
- 转换后的代码上线前,仍要跑自己的测试或 lint。
下一步可以接着做
这些入口会把当前任务接到更完整的工具链里。
真实使用场景
手动验算 RSA 的加密或解密一步
你在学 RSA,想亲手核对课本上的例子。选定 p、q、e、d 后,加密是 c = m^e mod n,解密是 m = c^d mod n。把明文当底数、公钥指数 e 当指数、n 当模数填进去,直接读出 c。再把 c 配上私钥指数 d 喂回来, 看着原文重新出现。因为全程是 BigInt,一个现实的 1024 位 n 也能 算准,而不只是大多数作业题被迫使用的那种小到不真实的模数。
手算核对一次 Diffie-Hellman 密钥交换
Diffie-Hellman 让双方各算 g^私钥 mod p。要核对一个例子,把 g 当 底数、你的私钥指数当指数、质数 p 当模数,得到你的公开值。再把对方 的公开值取你的私钥次方,同样 mod p,确认两边落在同一个共享密钥上。 平方乘法分步视图让人一眼看清:为什么正着算很便宜,而没有私钥时 倒着推很难。
调试你自己代码里的 modPow 实现
你用 C、Python 或 Go 写了快速幂,测试向量对不上。把同样的底数、 指数、模数粘到这里,从 BigInt 参考实现拿到已知正确答案,再打开 分步视图,把你的中间平方值和工具的逐一对照。一个常见的 bug 是 乘完之后忘了对 m 取模,这种错只在大输入上才暴露,分步列表能精确 指出你的数值是从哪一步开始岔开的。
在数论课上讲或学快速幂
讲平方乘法时,b 次乘法和 log2(b) 次平方之间的差距,光看公式很难 有体感。设一个小底数,指数取 13 或 100,打开分步视图,逐位拆解 就能精确展示哪几个平方被乘进了结果。学生改一改指数,就能看到步数 是随位数增长,而不是随数值大小增长,而这正是这个算法立身的那条 核心洞察。
常见踩坑
先算 a^b 再对 m 取模。在任何真实密码学规模下这都会溢出或卡死,因为 a^b 的位数能比宇宙里的原子还多。要在每次乘法后都对 m 取模,这正是平方乘法做的事,也是本工具内部的做法。
以为负指数总能算。a^(-b) mod m 只有在底数与模数互质时才存在,因为它需要模逆元。若 gcd(底数, m) 不为 1 就没有逆元,所以 4^(-1) mod 6 无定义,工具会报错而不是编一个值出来。
没想清楚就传模数 0 或 1。模数 0 非法,因为余数无定义。模数 1 合法但永远返回 0,因为任何整数都同余 0 mod 1,所以连 a^0 也是 a^b mod 1 = 0,如果你以为会得到 1 就会被这点意外到。
隐私说明
这里每一步都是浏览器标签页里运行的纯 JavaScript BigInt 运算。你填的 底数、指数、模数以及结果都不离开页面,也不在任何地方记录。唯一要注意 的是分享链接,它把三个输入写进查询字符串,所以把链接粘到聊天里,对方 服务器的访问日志会留下这些数字。如果你在核对真实的私钥或秘密指数, 请用复制按钮粘贴文本,而不是分享网址。
常见问题
类似工具组合
做你这行的人, 还会一起用这些。