You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript高精度大数计算问题:Shamir秘密共享实现遇精度丢失

解决Shamir秘密共享中的大数高精度计算问题

我在实现基于Shamir秘密共享的密码学方案时,需要将用户密码转换为超大数值作为密钥基础(必须保留该规模以抵御暴力破解),但这类大数的高精度计算是核心——精度丢失会直接破坏Shamir方案的逻辑。

用JavaScript测试时遇到了精度问题:

let x1 = 7.188886491318616e+49
let x2 = 3544952156018063400
let y1 = 1.4377772982637232e+51
let y2 = 354495215601806340

let m = (y1-y2)/(x1-x2)
let c1 = y1-(m*x1)
let c2 = y2-(m*x2)

console.log(m,c1,c2)

输出结果:

20 -1.661534994731145e+35 -70544547904759460000

数学上,通过两点(x1,y1)、(x2,y2)计算出的常数项c1和c2应完全相等,但JavaScript浮点数的精度限制导致斜率m被截断为20(实际应为20.000000000000000000000000000000981300066289124033420383081267387768851819976318114433200550955155),最终c1和c2数值不一致。试过BigNumber库但问题仍存在,想知道有没有标准化解决方法?


核心解决方案:用整数运算替代浮点数运算

Shamir秘密共享的本质是有限域上的多项式运算,所有计算都应在整数域(或素数域)内进行,完全不需要浮点数。你当前的错误在于用浮点数处理本应是整数的密钥计算——这从根源上就会引入精度丢失。

标准化实现步骤:

  1. 用字符串存储大整数
    不要用科学计数法的浮点数存储超大数值,而是用完整的整数字符串(比如把7.188886491318616e+49转换为71888864913186160000000000000000000000000000000000),再用支持大整数的工具处理:

    • 原生BigInt(ES2020+支持,可处理任意大整数)
    • 专业库:bignumber.js(需开启高精度配置)、密码学专用的大整数模块
  2. 推导整数版线性方程计算式
    由两点(x1,y1)、(x2,y2)的线性关系,消去斜率m后,常数项c的整数计算式为:
    c = (y1*x2 - y2*x1) / (x2 - x1)
    这里的除法是整数除法(Shamir方案中所有点都在多项式上,分子必然能被分母整除)。

  3. BigInt实现示例代码

    // 用字符串定义大整数,避免浮点数精度丢失
    const x1 = BigInt("71888864913186160000000000000000000000000000000000");
    const x2 = BigInt("3544952156018063400");
    const y1 = BigInt("143777729826372320000000000000000000000000000000000");
    const y2 = BigInt("354495215601806340");
    
    // 计算分子和分母
    const numerator = y1 * x2 - y2 * x1;
    const denominator = x2 - x1;
    
    // 整数除法(符合Shamir方案的数学性质,必然整除)
    const c = numerator / denominator;
    
    console.log(c.toString());
    

    该代码能得到精确的c值,不会出现精度丢失。

  4. 使用专业密码学库简化开发
    若不想手动实现大整数运算,可直接用成熟的Shamir秘密共享库(如shamirs-secret-sharing),这类库基于BigInt实现,已处理所有高精度计算细节,符合密码学标准。

关键注意事项:

  • 绝对不要用浮点数处理密码学密钥计算,浮点数的精度特性天生不适合这类场景。
  • 确保所有运算在素数有限域内进行(Shamir方案的标准要求),可选择合适的素数模限制数值范围,同时保证安全性。

内容的提问来源于stack exchange,提问作者Danial Ansari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:13:10