¿Cómo puedo codificar una clave privada en bitcoinJ - ECKey constructor?

¿Puede alguien explicar cómo usar el siguiente constructor (enumerado aquí ):

ECKey(BigInteger priv, org.spongycastle.math.ec.ECPoint pub) 

Digamos que mi clave privada es: priv = "L4...5".

  1. ¿Cómo obtengo la representación de entero grande (en otras palabras, y si entendí correctamente, hay una función para ir de check58a biginteger?), y

  2. ¿Qué pasa con el segundo parámetro?

Gracias

Respuestas (2)

Si todo lo que busca es obtener un ECKeyobjeto para esa clave privada, entonces Bitcoinj tiene una DumpedPrivateKeyclase para tal ocasión.

import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.DumpedPrivateKey;
import org.bitcoinj.params.MainNetParams;

public class Example {

    public static void main(String[] args) {
        String priv = "L4...5";
        ECKey key = DumpedPrivateKey.fromBase58(MainNetParams.get(), priv).getKey();
    }

}

Si desea utilizar un ECKeyconstructor explícitamente, debería poder obtener el código que necesita desde aquí:

https://github.com/bitcoinj/bitcoinj/blob/release-0.14/core/src/main/java/org/bitcoinj/core/DumpedPrivateKey.java#L70-L91


Con respecto al constructor que enumeró, es un constructor protegido, por lo que probablemente no sea uno que esté buscando usar. Enumera una clave privada y parámetros de clave pública. La clave privada puede ser nula si la ECKeyinstancia solo se va a usar para verificar firmas, no para producirlas realmente. La clave pública no debe ser nula y ahorra tiempo al no tener que volver a calcular la clave pública, que es una operación que requiere un uso intensivo de la CPU.

Tenga en cuenta que la mayoría de los public ECKeyconstructores están en desuso. La forma preferida de crear los ECKeyobjetos ahora es usar los métodos de fábrica estáticos.

muchas gracias... me funciono muy bien...

Puede llamar al método estático público de ECKeyclass, fromPrivate(byte[] privKeyBytes, booleano comprimido). La clave pública se calcula a partir de ella (esto es lento), comprimida o no. P.ej.,

        String privateKey = "Your Private Key";
        byte[] b = privateKey.getBytes();
        ECKey key = ECKey.fromPrivate(b, true);

o

BigInteger privKey = Base58.decodeToBigInteger(privateKey );
key = ECKey.fromPrivate(privKey);

https://bitcoinj.github.io/javadoc/0.13/org/bitcoinj/core/ECKey.html