# Interface SecretKey

All Superinterfaces:
  `Destroyable, Key, Serializable`

All Known Subinterfaces:
  `PBEKey`

All Known Implementing Classes:
  `EncryptionKey, KerberosKey, SecretKeySpec`

public interface SecretKey extends Key, Destroyable
A secret (symmetric) key. The purpose of this interface is to group (and provide type safety for) all secret key interfaces.

Provider implementations of this interface must overwrite the `equals` and `hashCode` methods inherited from `Object`, so that secret keys are compared based on their underlying key material and not based on reference. Implementations should override the default `destroy` and `isDestroyed` methods from the `Destroyable` interface to enable sensitive key information to be destroyed, cleared, or in the case where such information is immutable, unreferenced. Finally, since `SecretKey` is `Serializable`, implementations should also override `ObjectOutputStream.writeObject(java.lang.Object)` to prevent keys that have been destroyed from being serialized.

Keys that implement this interface return the string `RAW` as their encoding format (see `getFormat`), and return the raw key bytes as the result of a `getEncoded` method call. (The `getFormat` and `getEncoded` methods are inherited from the `Key` parent interface.)

Since:
  1.4
See Also:
  - `SecretKeyFactory`
  - `Cipher`

## Field Summary

Fields
Modifier and Type
Field
Description
`static final long`
`serialVersionUID`
Deprecated.
A `serialVersionUID` field in an interface is ineffectual.

## Method Summary

### Methods declared in interface Destroyable

`destroy, isDestroyed`
Modifier and Type
Method
Description
`default void`
`destroy()`
Destroy this `Object`.
`default boolean`
`isDestroyed()`
Determine if this `Object` has been destroyed.

### Methods declared in interface Key

`getAlgorithm, getEncoded, getFormat`
Modifier and Type
Method
Description
`String`
`getAlgorithm()`
Returns the standard algorithm name for this key.
`byte[]`
`getEncoded()`
Returns the key in its primary encoding format, or `null` if this key does not support encoding.
`String`
`getFormat()`
Returns the name of the primary encoding format of this key, or `null` if this key does not support encoding.

## Field Details

### serialVersionUID

@Deprecated static final long serialVersionUID
Deprecated.
A `serialVersionUID` field in an interface is ineffectual. Do not use; no replacement.
The class fingerprint that is set to indicate serialization compatibility since J2SE 1.4.

See Also:
  - Constant Field Values