Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Ctors](https://developer.android.com/reference/java/security/spec/EncodedKeySpec#pubctors) \| [Protected Ctors](https://developer.android.com/reference/java/security/spec/EncodedKeySpec#proctors) \| [Methods](https://developer.android.com/reference/java/security/spec/EncodedKeySpec#pubmethods) \| [Inherited Methods](https://developer.android.com/reference/java/security/spec/EncodedKeySpec#inhmethods)

# EncodedKeySpec


`
public


abstract
class
EncodedKeySpec
`


`

extends https://developer.android.com/reference/java/lang/Object


`

`


implements

https://developer.android.com/reference/java/security/spec/KeySpec


`

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.security.spec.EncodedKeySpec |

|---|
| Known direct subclasses [PKCS8EncodedKeySpec](https://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec), [X509EncodedKeySpec](https://developer.android.com/reference/java/security/spec/X509EncodedKeySpec), [XdhKeySpec](https://developer.android.com/reference/android/crypto/hpke/XdhKeySpec) |---|---| | [PKCS8EncodedKeySpec](https://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec) | This class represents the ASN.1 encoding of a private key, encoded according to the ASN.1 type `PrivateKeyInfo`. | | [X509EncodedKeySpec](https://developer.android.com/reference/java/security/spec/X509EncodedKeySpec) | This class represents the ASN.1 encoding of a public key, encoded according to the ASN.1 type `SubjectPublicKeyInfo`. | | [XdhKeySpec](https://developer.android.com/reference/android/crypto/hpke/XdhKeySpec) | External Diffie\\u2013Hellman (XDH) key spec holding either a public or private key. | |

<br />

*** ** * ** ***

This class represents a public or private key in encoded format.
**See also:**

- `https://developer.android.com/reference/java/security/Key`
- `https://developer.android.com/reference/java/security/KeyFactory`
- `https://developer.android.com/reference/java/security/spec/KeySpec`
- `https://developer.android.com/reference/java/security/spec/X509EncodedKeySpec`
- `https://developer.android.com/reference/java/security/spec/PKCS8EncodedKeySpec`

## Summary

| ### Public constructors ||
|---|---|
| ` https://developer.android.com/reference/java/security/spec/EncodedKeySpec#EncodedKeySpec(byte[])(byte[] encodedKey) ` Creates a new `EncodedKeySpec` with the given encoded key. |

| ### Protected constructors ||
|---|---|
| ` https://developer.android.com/reference/java/security/spec/EncodedKeySpec#EncodedKeySpec(byte[],%20java.lang.String)(byte[] encodedKey, https://developer.android.com/reference/java/lang/String algorithm) ` Creates a new `EncodedKeySpec` with the given encoded key. |

| ### Public methods ||
|---|---|
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/security/spec/EncodedKeySpec#getAlgorithm()() ` Returns the name of the algorithm of the encoded key. |
| ` byte[]` | ` https://developer.android.com/reference/java/security/spec/EncodedKeySpec#getEncoded()() ` Returns the encoded key. |
| ` abstract https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/security/spec/EncodedKeySpec#getFormat()() ` Returns the name of the encoding format associated with this key specification. |

| ### Inherited methods |
|---|---|
| From class ` https://developer.android.com/reference/java/lang/Object ` |---|---| | ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/lang/Object#clone()() ` Creates and returns a copy of this object. | | ` boolean` | ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) ` Indicates whether some other object is "equal to" this one. | | ` void` | ` https://developer.android.com/reference/java/lang/Object#finalize()() ` Called by the garbage collector on an object when garbage collection determines that there are no more references to the object. | | ` final https://developer.android.com/reference/java/lang/Class<?>` | ` https://developer.android.com/reference/java/lang/Object#getClass()() ` Returns the runtime class of this `Object`. | | ` int` | ` https://developer.android.com/reference/java/lang/Object#hashCode()() ` Returns a hash code value for the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notify()() ` Wakes up a single thread that is waiting on this object's monitor. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#notifyAll()() ` Wakes up all threads that are waiting on this object's monitor. | | ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/lang/Object#toString()() ` Returns a string representation of the object. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed. | | ` final void` | ` https://developer.android.com/reference/java/lang/Object#wait()() ` Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*. | ||

## Public constructors

### EncodedKeySpec

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public EncodedKeySpec (byte[] encodedKey)
```

Creates a new `EncodedKeySpec` with the given encoded key.

<br />

| Parameters ||
|---|---|
| `encodedKey` | `byte`: the encoded key. The contents of the array are copied to protect against subsequent modification. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | if `encodedKey` is null. |

## Protected constructors

### EncodedKeySpec

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected EncodedKeySpec (byte[] encodedKey, 
                String algorithm)
```

Creates a new `EncodedKeySpec` with the given encoded key.
This constructor is useful when subsequent callers of the
`EncodedKeySpec` object might not know the algorithm
of the key.

<br />

| Parameters ||
|---|---|
| `encodedKey` | `byte`: the encoded key. The contents of the array are copied to protect against subsequent modification. <br /> |
| `algorithm` | `String`: the algorithm name of the encoded key See the KeyFactory section in the [Java Security Standard Algorithm Names Specification](https://docs.oracle.com/en/java/javase/17/docs/specs/security/standard-names.html#keyfactory-algorithms) for information about standard algorithm names. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if `algorithm` is the empty string `""` |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if `encodedKey` or `algorithm` is null. |

## Public methods

### getAlgorithm

Added in [API level 35](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String getAlgorithm ()
```

Returns the name of the algorithm of the encoded key.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | the name of the algorithm, or null if not specified <br /> |

### getEncoded

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public byte[] getEncoded ()
```

Returns the encoded key.

<br />

| Returns ||
|---|---|
| `byte[]` | the encoded key. Returns a new array each time this method is called. <br /> |

### getFormat

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract String getFormat ()
```

Returns the name of the encoding format associated with this
key specification.

If the opaque representation of a key
(see `https://developer.android.com/reference/java/security/Key`) can be transformed
(see `https://developer.android.com/reference/java/security/KeyFactory`)
into this key specification (or a subclass of it),
`getFormat` called
on the opaque key returns the same value as the
`getFormat` method
of this key specification.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | a string representation of the encoding format. <br /> |