Java(四)- ECDSA生成公私钥

比特币地址生成验证
难度目标值:
由系数和指数构成:0x1903A30C
目标值:0x03a30c2(0x08(0x19-0x03))

maven:
  <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcprov-ext-jdk15on</artifactId>
            <version>1.62</version>
  </dependency>
 public static byte[] generatePrivateKey() {
        SecureRandom secureRandom = new SecureRandom();
        BigInteger privateKeyCheck = BigInteger.ZERO;
        BigInteger maxKey = new BigInteger("00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364140",16);
        byte[] privateKeyAttempt=new byte[32];
        secureRandom.nextBytes(privateKeyAttempt);
        privateKeyCheck=new BigInteger(1,privateKeyAttempt);
        while (privateKeyCheck.compareTo(BigInteger.ZERO)==0||privateKeyCheck.compareTo(maxKey)==1){
            secureRandom.nextBytes(privateKeyAttempt);
            privateKeyCheck=new BigInteger(1,privateKeyAttempt);
        }
        return privateKeyAttempt;
    }
    public static byte[] generatePublicKey(byte[] privateKey){
        ECNamedCurveParameterSpec spec= ECNamedCurveTable.getParameterSpec("secp256k1");
        ECPoint pointQ = spec.getG().multiply(new BigInteger(1, privateKey));
        return pointQ.getEncoded();
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。