ecinitialize.java
来自「实现了椭圆曲线的初始化」· Java 代码 · 共 109 行
JAVA
109 行
import java.math.*;
public class ECInitialize
{
BigInteger p=new BigInteger("BDB6F4FE3E8B1D9E0DA8C0D46F4C318CEFE4AFE3B6B8551F",16);
BigInteger a;
BigInteger b;
//BigInteger gx;
public ECInitialize()
{
GenRanBigNum grbn=new GenRanBigNum();
BigInteger a=grbn.setBigNum(p);
BigInteger b=grbn.setRanNum(p);
this.a=a;
this.b=b;
}
public void setAB()//这个方法在生成椭圆曲线时,要保证只用一次
{
GenRanBigNum grbn=new GenRanBigNum();
BigInteger a=grbn.setRanNum(p);
BigInteger b=grbn.setRanNum(p);
this.a=a;
this.b=b;
}
public EllipticCurve setEllipticCurve()//生成椭圆曲线
{
ECFieldFp field=new ECFieldFp(p);
if(!this.judge())
{
this.setEllipticCurve();
}
EllipticCurve ec=new EllipticCurve(field,a,b);
return ec;
}
public boolean judge()throws NullPointerException
{
BigInteger a=this.a;
BigInteger b=this.b;
boolean flag=false;
try
{
BigInteger v1=BigInteger.valueOf(4).multiply(a.multiply(a.multiply(a)));
BigInteger v2=BigInteger.valueOf(27).multiply(b.multiply(b));
boolean bool=v1.add(v2).equals(BigInteger.valueOf(0));
if(bool)
{
flag=bool;
}
else
{
flag=true;
}
}
catch(NullPointerException err)
{
}
return flag;
}
public BigInteger setBigSeed()
{
GenRanBigNum grbn=new GenRanBigNum();
BigInteger s=grbn.setRanNum(p);
return s;
}
public BigInteger getA()
{
GenRanBigNum grbn=new GenRanBigNum();
BigInteger a=grbn.setRanNum(p);
return a;
}
public BigInteger getB()
{
BigInteger b=this.b;
return b;
}
public BigInteger getP()
{
BigInteger p=this.p;
return p;
}
public static void main(String args[])throws NullPointerException
{
ECInitialize eci=new ECInitialize();
System.out.println("a="+eci.getA());
System.out.println("b="+eci.getB());
System.out.println("seed="+eci.setBigSeed());
System.out.println("judge="+eci.judge());
System.out.println("p="+eci.getP());
//以下计算非常耗时
/*String para="";
para=eci.getA().toString();
ECParameters ecp1=new ECParameters(para);
System.out.println(ecp1.a);
ECParameters ecp2=new ECParameters();
System.out.println(ecp2.a);
*/
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?