Critografía de clave elíptica (ECC) para generar clave privada y pública

Quiero generar un par de claves públicas y privadas usando ECC y luego importarlas a Ethereum para crear una cuenta a través de Geth. Estoy trabajando en una máquina con Windows.

¿Cuáles son los pasos que debo seguir para eso?

Creo que OpenSSL se puede usar en tal caso. ¿Cómo puedo proceder con eso?

Hay una publicación de blog que es exactamente lo que está buscando Crear billetera, par de claves y dirección completos de Ethereum por Vincent Kobel.

Respuestas (1)

Aquí hay un ejemplo de Python de alto nivel sobre cómo generar la clave privada y pública de Ethereum (par de direcciones).

Puede importar la clave privada utilizando personal.importRawKey(hex_key, password)la API JSON-RPC.

La mayor parte del software Ethereum usa la biblioteca secp256k1 que también se usa en Bitcoin. Para otros lenguajes de programación, consulte las bibliotecas Ethereum de alto nivel o los enlaces secp256k1 de bajo nivel.

import bitcoin
from secp256k1 import PrivateKey

def get_ethereum_address_from_private_key(private_key_seed_ascii: str) -> str:
  """Generate Ethereum address from a private key.

  https://github.com/ethereum/pyethsaletool/blob/master/pyethsaletool.py#L111

  :param private_key: Any string as a seed, the actual private key will be sha3 hash of this seed. Note that this is not any mnemonic compatible way of generating private keys from seeds.

  :return: 0x prefixed hex string
  """
    priv = utils.sha3(private_key_seed_ascii)
    pub = bitcoin.encode_pubkey(bitcoin.privtopub(priv), 'bin_electrum')
    return "0x" + binascii.hexlify(sha3(pub)[12:]).decode("ascii")
¡Gracias por la ayuda! Pero estoy restringido a usar solo OpenSSL en mi caso.