首页 > 其他分享 >二元coppersmith

二元coppersmith

时间:2023-09-24 13:12:33浏览次数:34  
标签:二元 多项式 矩阵 monomials coppersmith ring roots

由于很多次写题目都要用到二元多项式小根求解,而且关于二元多项式的文章比较稀少,而且都是一元的copper,特地在本篇博客中详细探讨。

img

规定d >= 多项式f中的最大幂。w为多项式中的最大系数,那么可以知道在模q的多项式中,最大系数即为q。X,Y为对应小根的上界,可以人为定义。

coron的证明如下。

img

定义了k为shifts且足够大,这里k=2,定义了一个新的多项式s。为下文构造出的矩阵作为铺垫。

img

以example为例,我们知道小根x<30,x小根y<20的情况下,找到多项式的小根。我们用X,Y代换这条多项式,根据上述的proof,我们对这条多项式进行移位,其中k=2,所以a={0,1},b={0,1}

img

根据移位后的多项式中每一项的幂,填充矩阵的每一行,共有9中情况,所以先构成一个9行4列的矩阵。为了使这矩阵能够行规约出较小的向量,我们构造一个9*9的矩阵,与这个矩阵拼接。
img

论文中也有讲述如何推算出矩阵的大小,例子中k=2,d=1,那么根据对应项构造出13*9的对角矩阵
img

构造出相应矩阵之后,我们计算出矩阵b的埃尔米特标准型矩阵

img

不难发现16129 = 127^2,2048383 = 127^3,26014461 = 127^4

那么通过LLL算法,规约出来的第一个列向量,其中X,Y代换为变量,即我们设的x,y,构造出新的多项式
img

显然G(x,y)不是F(x,y)的倍数,因为G(x)中并没有xy这一项。我们通过因式分解由格基规约得到的多项式,

得到了这个多项式的小根。

那么k = 3呢?那么构建出了16*25的矩阵

那么对应所有移位的多项式为

img

以此类推,可以知道移位越多,构建的矩阵越大,格基规约的向量维数也就越大,精度更高,当然跑的也越慢。

二元如此,那么更高元的也可以由此推之。

这里贴上二元多项式求小根的代码,其中m为移位(shifts),d 为多项式中的最高幂。

点击查看代码
def small_roots(f, bounds, m=1, d=None):

    if not d:
        d = f.degree()
    R = f.base_ring()
    N = R.cardinality()

    f /= f.coefficients().pop(0)
    f = f.change_ring(ZZ)

    G = Sequence([], f.parent())
    for i in range(m + 1):
        base = N ^ (m - i) * f ^ i
        for shifts in itertools.product(range(d), repeat=f.nvariables()):
            g = base * prod(map(power, f.variables(), shifts))
            G.append(g)

    B, monomials = G.coefficient_matrix()
    monomials = vector(monomials)

    factors = [monomial(*bounds) for monomial in monomials]
    for i, factor in enumerate(factors):
        B.rescale_col(i, factor)

    B = B.dense_matrix().LLL()

    B = B.change_ring(QQ)
    for i, factor in enumerate(factors):
        B.rescale_col(i, 1 / factor)

    H = Sequence([], f.parent().change_ring(QQ))
    for h in filter(None, B * monomials):
        H.append(h)
        I = H.ideal()
        if I.dimension() == -1:
            H.pop()
        elif I.dimension() == 0:
            roots = []
            for root in I.variety(ring=ZZ):
                root = tuple(R(root[var]) for var in f.variables())
                roots.append(root)
            return roots

    return []

标签:二元,多项式,矩阵,monomials,coppersmith,ring,roots
From: https://www.cnblogs.com/JustGo12/p/17725874.html

相关文章

  • 求二元数组各行元素的平均值
    intmain(){ intarr[3][4]={0}; intsum=0; inti=0;intj=0; doubleave=0.0; srand(time(NULL)); for(i=0;i<3;i++) { ave=0; for(j=0;j<4;j++) { arr[i][j]=rand()%20+1; printf("%d",arr[i][j]); ave+=arr[i][j]; }......
  • 怎么证明二元函数的极限是多少?& 怎么证明二元函数的极限不存在?
    怎么证明二元函数的极限是多少:https://zhaokaifeng.com/16589/怎么证明二元函数的极限不存在:https://zhaokaifeng.com/16600/......
  • 扩展欧几里得求二元丢番图方程的解
    方程\(ax+by=c\)被称为二元线性丢番图方程,其中\(a,b,c\)为确定值,\(x,y\)为变量。这个方程有无解和无穷多个解两种可能。定理\(ax+by=c\)有解的充分必要条件是\(d=gcd(a,b)\)能整除\(c\)若\(x_0\)和\(y_0\)是\(ax+by=gcd(a,b)\)的一组特解,那么\(ax+by=c\)的一组特解为\(x_0'=x_......
  • ACQUITY UPLC H-Class PLUS二元系统的功能与串联四极杆技术相结合,用于常规定量UPLC-MS
    超高效液相色谱仪ACQUITYUPLCH-ClassPLUSACQUITYUPLCH-ClassPLUS系统拥有新一代超高性能仪器,是一款具有出色分离度的四元或二元液相色谱(LC)系统。为了获得真正的UPLC性能,要求系统扩散性(或柱外谱带展宽)能够与填充亚2μm粒径颗粒的细孔色谱柱相关的峰宽相匹配。尽管其他系统......
  • R语言自适应LASSO 多项式回归、二元逻辑回归和岭回归应用分析|附代码数据
    值网格上计算套索LASSO或弹性网路惩罚的正则化路径正则化(regularization)该算法速度快,可以利用输入矩阵x中的稀疏性,拟合线性、logistic和多项式、poisson和Cox回归模型。可以通过拟合模型进行各种预测。它还可以拟合多元线性回归。”例子加载数据这里加载了一个高斯(连续Y)......
  • 高精度四则及GCD运算(二元均是高精度)
    原代码出处,转自HDAWN,经过部分改写,包装为结构体,常数比较大.测试输出大概实际操作具体支持四则运算及GCD运算,重写了istream和ostream和比较运算符.构造函数既可以longlong,string,也可以char[]如果除法要求余数,a/b=c,a-b*c=res,除了这样绕一......
  • 带补偿和电力市场上升问题的二元平衡问题的精确求解方法 二元策略中的纳什均衡
    带补偿和电力市场上升问题的二元平衡问题的精确求解方法二元策略中的纳什均衡GAMS源代码,代码按照高水平文章复现,保证正确纳什均衡在游戏中与二元决策变量包括薪酬支付和激励相容约束的非合作博弈理论直接转化为一个优化框架代替使用一阶线性化的条件,或放松的完整性的条件。重......
  • R语言MCMC的lme4二元对数Logistic逻辑回归混合效应模型分析吸烟、喝酒和赌博影响数据|
    原文下载链接:http://tecdat.cn/?p=29196最近我们被客户要求撰写关于逻辑回归混合效应模型的研究报告,包括一些图形和统计输出。吸烟、喝酒和赌博被认为是由许多因素造成的。Logistic回归分析是一个非常有效的模型,可以检验各种解释变量和二元反应变量之间的关系。同时,双变量模型分......
  • 华为OD机试 统计匹配的二元组个数
    本期题目:统计匹配的二元组个数题目给定两个数组A和B,若数组A的某个元素A[i]与数组B中的某个元素B[j]满足A[i]==B[j],则寻找到一个匹配的二元组(i,j),请统计再这两个数组A和B中,一共存在多少个这样的二元组。输入第一行输入数组A的长度M;第一行输入数组B的......
  • 二元多项式小根求解
    二元多项式小根求解原论文链接,建议配合一起食用,二元小根多项式主要在P404,405,406.由于很多次写题目都要用到二元多项式小根求解,而且关于二元多项式的文章比较稀少,而且都......