> ## Documentation Index
> Fetch the complete documentation index at: https://hedera-0c6e0218-docs--429.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Import an existing key

Construct keys in another format to a key representation or import keys from a file.

<table><thead><tr><th /><th /><th /></tr></thead><tbody><tr><td><strong>Method</strong></td><td><strong>Type</strong></td><td><strong>Description</strong></td></tr><tr><td><code>PrivateKey.fromString(\<privateKey>)</code></td><td>String</td><td>Constructs a private key string to PrivateKey</td></tr><tr><td><code>PublicKey.fromString(\<publicKey>)</code></td><td>String</td><td>Constructs a public key string to PublicKey</td></tr><tr><td><code>PrivateKey.fromStringECDSA(\<privateKey>)</code></td><td>String</td><td>Constructs an ECDSA key from a private key string</td></tr><tr><td><code>PublicKey.fromStringECDSA(\<publicKey>)</code></td><td>String</td><td>Constructs an ECDSA public key from a public key string</td></tr><tr><td><code>PrivateKey.fromBytesECDSA(\<privateKey>)</code></td><td>byte\[ ]</td><td>Constructs an ECDSA key from a private key bytes</td></tr><tr><td><code>PublicKey.fromBytesECDSA(\<publicKey>)</code></td><td>byte\[ ]</td><td>Constructs an ECDSA public key from a public key bytes</td></tr><tr><td><code>PrivateKey.fromStringED25519(\<privateKey>)</code></td><td>String</td><td>Constructs an ED25519 key from a private key string</td></tr><tr><td><code>PublicKey.fromStringED25519(\<publicKey>)</code></td><td>String</td><td>Constructs an ED25519 public key from a public key string</td></tr><tr><td><code>PrivateKey.fromBytesED25519(\<privateKey>)</code></td><td>byte \[ ]</td><td>Constructs an ED25519 key from a private key bytes</td></tr><tr><td><code>PublicKey.fromBytesED25519(\<publiceKey>)</code></td><td>byte \[ ]</td><td>Constructs an ED25519 public key from a public key bytes</td></tr><tr><td><code>PrivateKey.fromBytes(\<privateKey>)</code></td><td>byte \[ ]</td><td>Constructs a private key from bytes to PrivateKey</td></tr><tr><td><code>PublicKey.fromBytes(\<publicKey>)</code></td><td>byte \[ ]</td><td>Contructs a public key from bytes to PublicKey</td></tr><tr><td><code>PrivateKey.fromPem(\<pemEncoded>)</code></td><td>String</td><td>Parse a private key from a PEM encoded string</td></tr><tr><td><code>PrivateKey.fromPem(\<encodedPem, password>)</code></td><td>String, String</td><td>Parse a private key from a PEM encoded string. The private key may be encrypted, e.g. if it was generated by OpenSSL.</td></tr><tr><td><code>PrivateKey.readPem(\<pemfile>)</code></td><td>Reader</td><td>Parse a private key from a PEM encoded reader</td></tr><tr><td><code>PrivateKey.readPem(\<pemFile, password>)</code></td><td>Reader, String</td><td>Parse a private key from a PEM encoded stream. The key may be encrypted, e.g. if it was generated by OpenSSL.</td></tr></tbody></table>

<CodeGroup>
  ```java Java theme={null}
  //Converts a private key string to PrivateKey
  PrivateKey privateKey = PrivateKey.fromStringED25519("302e020100300506032b657004220420d763df96caaabf192c67326e87c32a1ae4571f739022c77d2acaae5dd09cfb13");

  //The public key associated with the private key
  PublicKey publicKey = PublicKey.fromStringED25519("302a300506032b65700321008f556741dcb5e144e5cabfce5355ad5050ec7a6ea15787a5fd759d616e047d24");
  ```

  ```javascript JavaScript theme={null}
  //Converts a private key string to PrivateKey
  const privateKey = PrivateKey.fromStringED25519("302e020100300506032b657004220420d763df96caaabf192c67326e87c32a1ae4571f739022c77d2acaae5dd09cfb13");

  //The public key associated with the private key
  const publicKey = PublicKey.fromStringED25519("302a300506032b65700321008f556741dcb5e144e5cabfce5355ad5050ec7a6ea15787a5fd759d616e047d24");
  ```

  ```go Go theme={null}
  //Converts a private key string to PrivateKey
  privateKey, err := hedera.PrivateKeyFromStringEd25519("302e020100300506032b65700422042012a4a4add3d885bd61d7ce5cff88c5ef2d510651add00a7f64cb90de3359b105")

  if err != nil {
  		panic(err)
  	}

  //The public key associated with the private key
  publicKey, err := hedera.PublicKeyFromString("302a300506032b6570032100d292412f1c86507224c1db656050c2162c91983540d608f6a31e9b43359bc5e")

  if err != nil {
  		panic(err)
  	}
  ```

  ```rust Rust theme={null}
  // Import ED25519 keys from strings
  let private_key = PrivateKey::from_str("302e020100300506032b657004220420d763df96caaabf192c67326e87c32a1ae4571f739022c77d2acaae5dd09cfb13");
  let public_key = PublicKey::from_str("302a300506032b65700321008f556741dcb5e144e5cabfce5355ad5050ec7a6ea15787a5fd759d616e047d24");

  // Import from PEM
  let private_key = PrivateKey::from_pem("-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----");
  // With password if encrypted
  let private_key = PrivateKey::from_pem_with_password("-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----", "password");

  println!("Imported private key: {:?}", private_key);
  println!("Imported public key: {:?}", public_key);

  // v0.34.0
  ```
</CodeGroup>
