繁体   English   中英

生成椭圆曲线加密的椭圆曲线的基点(G)

[英]Generate base point ( G ) of elliptic curve for elliptic curve cryptography

如何在Java中为椭圆曲线生成基点或生成器?

我正在开发一个可用于实现一些椭圆曲线加密算法的Java包,我想使用自己的曲线。 但是,我陷入了必须获得曲线的生成器基点的位置,以便我可以拥有一组域参数。

任何帮助深表感谢。

给定一个“接近素数”的椭圆曲线u = k r ,你应该:

  1. 生成随机点P
  2. 设定G = k P
  3. 如果G = 0转到1
  4. 验证r G不为0(如果为0,则曲线没有顺序k r )。
  5. 否则G是一个程序点r

对于java,C或其他什么都是一样的....

首先假设您自己创建了具有素数组q的ECC域,并希望将其用于加密。 然后选择一个随机x坐标,然后从weierstrass形式的椭圆曲线方程计算y ^ 2。 希望你选择了一个质数模数p,它是3 mod 4.在这种情况下,如果它存在,确定squareroot mod p是微不足道的。 如果它不存在,请尝试另一个x。 我很少需要超过2次尝试,大多数情况下,第一次尝试会导致已经在新创建的域中生成有效的生成器。

您可以使用我的开源程序“学术签名”来实现此目的。 手动和链接到下载页面 如果将新域导入域列表,则可以尝试使用该域的任意生成器。 导入到学术签名时检查生成器。 如果它不是椭圆曲线上的有效点,则测试点的x坐标将增加,直到遇到有效的xy坐标对。 如果随后导出域,则新生成器将包含在域参数的纯文本文件中。

在此页面ECC Domain页面上,您可以找到我创建的一些域名,我使用上面提到的过程来获取包含一些“hex wordart”的生成器。

如果你没有自己创建域,如果它是主要的顺序,如果你已经在某些实现中使用了一个生成器,那就更容易了:用一个随机数乘以旧的实现生成器,你就得到了一个新的您可以使用生成器将键空间与其他实现的键空间分开。

关心迈克尔安德斯

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM