Go 如何添加两条曲线25519点

Go 如何添加两条曲线25519点,go,cryptography,curve-25519,Go,Cryptography,Curve 25519,曲线25519上有两点([32]字节)。如何添加它们(a+b)。显然,我不能使用big.Int,因为它们不是数字,而是曲线上的点。到目前为止,我还没有发现任何库可以执行类似的操作,我可以使用: a:=[32]字节//我从另一个函数中得到它 b:=[32]字节//也来自另一个函数 点a,:=新的(爱德华25519点).SetBytes(a) 点b,:=新(edwards25519.点).SetBytes(b) pointC:=pointA.Add(pointA,pointB) fmt.Printl

曲线25519上有两点([32]字节)。如何添加它们(a+b)。显然,我不能使用big.Int,因为它们不是数字,而是曲线上的点。到目前为止,我还没有发现任何库可以执行类似的操作,我可以使用:

a:=[32]字节//我从另一个函数中得到它
b:=[32]字节//也来自另一个函数
点a,:=新的(爱德华25519点).SetBytes(a)
点b,:=新(edwards25519.点).SetBytes(b)
pointC:=pointA.Add(pointA,pointB)
fmt.Println(pointC.Bytes())

我已经尝试过使用它,并使用
&edwards25519.Point{}.BytesMontgomery()
将结果转换为蒙哥马利曲线,但我无法将
a
b
导入到edwards25519曲线中,因为它们是曲线25519上的点。

您可以使用
libnail
通过两个步骤实现这一点

  • Edwards25519/Ed25519
    密钥开始,生成两个公钥/点,然后调用
    crypto\u core\u Ed25519\u add
    ()

  • 通过双向映射()使用加密符号ed25519将结果转换为曲线25519

  • Go
    的绑定。你需要小心,不要使用一些“随机”库,这些东西很难得到正确的,也很难在固定时间内完成(避免旁道)

    提供将
    (x,y)Ed25519 Edwards
    点映射到
    (u,v)曲线25519 Montgomery
    点的公式,反之亦然

    双民族地图是:

     (u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)
     (x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))
    

    您可以使用
    libnail
    通过两个步骤实现这一点

  • Edwards25519/Ed25519
    密钥开始,生成两个公钥/点,然后调用
    crypto\u core\u Ed25519\u add
    ()

  • 通过双向映射()使用加密符号ed25519将结果转换为曲线25519

  • Go
    的绑定。你需要小心,不要使用一些“随机”库,这些东西很难得到正确的,也很难在固定时间内完成(避免旁道)

    提供映射
    (x,y)Ed25519 Edwards
    点到
    (u,v)Curve2519 Montgomery
    点的公式,反之亦然

    双民族地图是:

     (u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)
     (x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))
    


    你想实现什么?增加两点是我目前正在实现的算法的一部分。算法是什么?ECDH?有点,但不是真的。我目前正在实施teamspeak 3的客户端协议。密钥交换包含解析许可证的多个块并在曲线上添加结果点。这在任何方面都不是真正的标准,但它就是这样。你想实现什么?添加两点是我目前正在实现的算法的一部分。算法是什么?ECDH?有点,但不是真的。我目前正在实施teamspeak 3的客户端协议。密钥交换包含解析许可证的多个块并在曲线上添加结果点。这在任何方面都不是真正的标准,但它就是这样。但是我如何才能将曲线255119点转换为ed25519点呢?我不能仅仅生成一个新的密钥,因为我是从服务器获取它们的。您可以通过solutionNice变通方法阅读我试图做的@PhilippSchöppner更新答案!感谢@kelalakaWhile阅读您的答案我脑海中浮现出一篇文章,发表于2003年左右,研究人员从蒙哥马利阶梯上找到了x坐标。如果我找到了,我会通知你的。但是我如何才能将曲线25519点转换为ed25519点呢?我不能仅仅生成一个新的密钥,因为我是从服务器获取它们的。您可以通过solutionNice变通方法阅读我试图做的@PhilippSchöppner更新答案!感谢@kelalakaWhile阅读您的答案我脑海中浮现出一篇文章,发表于2003年左右,研究人员从蒙哥马利阶梯上找到了x坐标。如果我找到了,我会通知你的。