PrivateKey

2018-05-23  本文已影响0人  风生水起_2018

私钥:用来解锁对应(钱包)地址的一串字符

/**
     * Generates an entirely new keypair with the given {@link SecureRandom} object. Point compression is used so the
     * resulting public key will be 33 bytes (32 for the co-ordinate and 1 byte to represent the y bit).
     * 通过提供的随机数生成器,生成完整的密钥对。
     * 生成的公钥包含33个字节,其中x坐标占用32额字节,y坐标占用1个字节(因为y值可以通过x只计算出来,因此这个字节用于标识正负)
     */
    public ECKey(SecureRandom secureRandom) {
        //实例化密钥对生成器
        ECKeyPairGenerator generator = new ECKeyPairGenerator();
        //设置密钥对生成器的相关参数,包括曲线类型和随机数生成器
        ECKeyGenerationParameters keygenParams = new ECKeyGenerationParameters(CURVE, secureRandom);
        //初始化密钥生成器相关参数
        generator.init(keygenParams);
        //生成密钥对
        AsymmetricCipherKeyPair keypair = generator.generateKeyPair();
        //获取公钥和私钥参数对象
        ECPrivateKeyParameters privParams = (ECPrivateKeyParameters) keypair.getPrivate();
        ECPublicKeyParameters pubParams = (ECPublicKeyParameters) keypair.getPublic();
        //获取私钥和公钥值
        priv = privParams.getD();
        pub = new LazyECPoint(CURVE.getCurve(), pubParams.getQ().getEncoded(true));
        //设置密钥对生成时间
        creationTimeSeconds = Utils.currentTimeSeconds();
    }
上一篇下一篇

猜你喜欢

热点阅读