news 2026/4/16 0:05:04

ZK-ALU-在有限域上实现乘法和除法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ZK-ALU-在有限域上实现乘法和除法

有限域上大整数乘法(模乘)实现过程

HMulAssign
  1. 分两轮做模乘加

    • bi==0:a*bi + carry,c=a*bi

    • bi=[1~7]:a * bi + c + carry,c=a*bi + c

  2. 利用模逆数做模约减

    • a*b mod N
  3. 取模

DMulAssign
  1. 按b的奇偶位进行

    1. 分两轮做模乘加

      • bi==0:a*bi + carry,c=a*bi

      • bi=[1~7]:a * bi + c + carry,c=a*bi + c

    2. 利用模逆数做模约减

      • a*b mod N
  2. 合并奇偶位计算结果: 按顺序累加

  3. 取模

有限域上大整数除法(模逆元)实现过程

除法 实现过程:

  1. 除数求倒数后,再和被除数相乘
  2. 求倒数过程: 通过扩展欧几里得算法(BEA), 计算大整数的模逆元.(过程中使用右移操作代替除以2)

背景知识

  1. 二进制扩展欧几里得算法(BEA)

    该函数采用的是 二进制扩展欧几里得算法 (Binary Extended Euclidean Algorithm, BEA)。BEA 算法是专门为模素数域中的逆元计算而优化的一种算法。它通过反复地将两个数同时除以 2,并进行减法操作,最终得到逆元。

  2. 模运算性质:在模运算中,有些特殊的性质可以利用。例如,如果 a 和 b 都是偶数,那么 gcd(a, b) = 2 * gcd(a/2, b/2)。利用这个性质,我们可以通过同时将 a 和 b 除以 2 来加速算法的收敛。

  3. 辗转相减:辗转相减是求最大公约数的一种方法,大数减小数,然后把差赋值给大数, 重复, 直到两数相等时,即为最大公约数。

  4. 蒙哥马利模约简: 简化和加速后续的运算, 数字x被表示为M o n t ( x ) = x ⋅ R ( mod M O D U L U S ) {Mont}(x) = x \cdot R \ (\text{mod} \ MODULUS)Mont(x)=xR(modMODULUS),其中R = 2 n R = 2^{n}R=2n,且n nn通常被选为比MODULUS大的最小的 2 的幂。

    蒙哥马利模约简是一种高效的模运算方法,特别适用于大型整数的乘法和求逆操作。它通过将数字映射到一个所谓的“蒙哥马利域”(Montgomery domain)来避免直接的模除操作,从而提高计算效率。

算法原理

  • 扩展欧几里得算法: 函数的核心部分是扩展欧几里得算法。该算法用于求解不定方程 ax + by = gcd(a, b),其中 a 和 b 是整数,x 和 y 是待求的整数。在有限域中,gcd(a, b) 通常为 1,因此方程变为 ax + by = 1。求得的 x 或 y 即为 a 或 b 的模 b 或 a 的逆元。
  • 迭代求解: 函数通过不断迭代,逐步逼近逆元。在每次迭代中,将较大的数减去较小的数,并相应地调整系数。
  • 结果判断: 当 u 或 v 等于 1 时,迭代结束,此时 b 或 c 即为所求的逆元。
BEA 循环

只要 u 和 v 都不是 1,就一直循环:
处理偶数:
如果 u 是偶数,则 u 和 b 都除以 2。
如果 v 是偶数,则 v 和 c 都除以 2。
在除以 2 的过程中,如果 b 或 c 变为负数,则加上模数 P.MODULUS。
比较大小并相减:
如果 v 小于 u,则 u 减去 v,b 减去 c。
否则,v 减去 u,c 减去 b。

返回结果

循环结束后,如果 u 为 1,则 b 就是 self 的模逆元。否则,c 是逆元。


往期精彩回顾:
区块链知识系列
密码学系列
零知识证明系列
共识系列
公链调研系列
BTC系列
以太坊系列
EOS系列
Filecoin系列
联盟链系列
Fabric系列
智能合约系列
Token系列
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:16:20

六边形网格路径规划,A*、遗传、蚁群优化和元胞自动机四种经典算法多场景对比,Python代码

基于六边形网格的路径规划算法摘要路径规划是机器人导航、智能交通和游戏AI等领域的核心问题。本期推文基于六边形网格结构,系统地对比了四种经典路径规划算法:A*算法、遗传算法、蚁群优化算法和元胞自动机算法。通过设计四组不同规模和复杂度的测试场景…

作者头像 李华
网站建设 2026/4/12 16:12:36

基于SpringBoot+Vue的供应商管理系统管理系统设计与实现【Java+MySQL+MyBatis完整源码】

摘要 随着信息技术的飞速发展,企业供应链管理的信息化需求日益增长。传统供应商管理方式依赖人工操作,效率低下且易出错,难以满足现代企业对高效、透明、可追溯的供应链管理需求。供应商管理系统通过数字化手段整合供应商信息、合同管理、订单…

作者头像 李华
网站建设 2026/4/10 22:07:13

16、SNMP监控信息收集与插件使用指南

SNMP监控信息收集与插件使用指南 1. 系统负载信息收集 在使用SNMP进行监控时,我们可以从UCD - SNMP - MIB中获取系统负载相关信息。例如: - UCD - SNMP - MIB::laLoad.3 = STRING: 0.77 - UCD - SNMP - MIB::laLoadInt.1 = INTEGER: 530 - UCD - SNMP - MIB::laLoa…

作者头像 李华
网站建设 2026/4/5 18:47:46

19、深入解析Nagios被动检查与NSCA传输机制

深入解析Nagios被动检查与NSCA传输机制 1. 被动服务检查 在Nagios中,若要通过接口接受被动服务检查,需在全局配置和相应服务定义中明确允许。在 /etc/nagios/nagios.cfg 文件里,要设置如下参数: check_external_commands=1 command_check_interval=-1 command_file=/…

作者头像 李华
网站建设 2026/4/16 5:38:12

网安圈炸了!薪资断崖式下跌,果然是 “城里城外两重天”?

网安这行,如今也活脱脱是现实版的《围城》。城里的人被威胁压得喘不过气,想出来透透气; 城外的人看着热闹和机遇,又削尖了脑袋想往里冲。 新闻里刚曝出某大厂安全团队被“毕业”,转头就看到校招网安岗位挤破了头。最…

作者头像 李华
网站建设 2026/4/8 17:23:15

选专业 / 转行必看!网络工程和网安的区别?就业 + 薪资差一次讲透

随着互联网发展,网络已经深入到日常生活和工作当中,网络工程和网络安全已成了大多数人心中热门的行业选择。因此,大部分人都容易把网络工程和网络安全混淆。 网络工程:就是按照国家和国际标准建设计算机网络系统的全过程。具体来说…

作者头像 李华