public class SecretKeySpec extends Object implements KeySpec, SecretKey
It can be used to construct a SecretKey
from a byte array, without having to go through a
(provider-based) SecretKeyFactory
.
This class is only useful for raw secret keys that can be represented as a byte array and have no key parameters associated with them, e.g., DES or Triple DES keys.
SecretKey
,
Serialized FormConstructor and Description |
---|
SecretKeySpec(byte[] key,
int offset,
int len,
String algorithm)
Constructs a secret key from the given byte array, using the first
len bytes of key ,
starting at offset inclusive. |
SecretKeySpec(byte[] key,
String algorithm)
Constructs a secret key from the given byte array.
|
Modifier and Type | Method and Description |
---|---|
void |
destroy()
Destroy this
Object . |
boolean |
equals(Object obj)
Tests for equality between the specified object and this object.
|
String |
getAlgorithm()
Returns the name of the algorithm associated with this secret key.
|
byte[] |
getEncoded()
Returns the key material of this secret key.
|
String |
getFormat()
Returns the name of the encoding format for this secret key.
|
int |
hashCode()
Calculates a hash code value for the object.
|
boolean |
isDestroyed()
Determine if this
Object has been destroyed. |
public SecretKeySpec(byte[] key, int offset, int len, String algorithm)
len
bytes of key
,
starting at offset
inclusive.
The bytes that constitute the secret key are those between key[offset]
and
key[offset+len-1]
inclusive.
This constructor does not check if the given bytes indeed specify a secret key of the specified algorithm. For
example, if the algorithm is DES, this constructor does not check if key
is 8 bytes long, and also
does not check for weak or semi-weak keys. In order for those checks to be performed, an algorithm-specific key
specification class must be used.
key
- the key material of the secret key. The first len
bytes of the array beginning at
offset
inclusive are copied to protect against subsequent modification.offset
- the offset in key
where the key material starts.len
- the length of the key material.algorithm
- the name of the secret-key algorithm to be associated with the given key material. See the
Java
Security Standard Algorithm Names document for information about standard algorithm names.IllegalArgumentException
- if algorithm
is null or key
is null, empty, or too short, i.e.
key.length-offset<len
.ArrayIndexOutOfBoundsException
- is thrown if offset
or len
index bytes outside the key
.public SecretKeySpec(byte[] key, String algorithm)
This constructor does not check if the given bytes indeed specify a secret key of the specified algorithm. For
example, if the algorithm is DES, this constructor does not check if key
is 8 bytes long, and also
does not check for weak or semi-weak keys. In order for those checks to be performed, an algorithm-specific
key specification class should be used.
key
- the key material of the secret key. The contents of the array are copied to protect against subsequent
modification.algorithm
- the name of the secret-key algorithm to be associated with the given key material. See the
Java
Security Standard Algorithm Names document for information about standard algorithm names.IllegalArgumentException
- if algorithm
is null or key
is null or empty.public void destroy() throws DestroyFailedException
Destroyable
Object
.
Sensitive information associated with this Object
is destroyed or cleared. Subsequent calls to certain
methods on this Object
will result in an IllegalStateException
being thrown.
The default implementation throws DestroyFailedException
.
destroy
in interface Destroyable
DestroyFailedException
- if the destroy operation fails.
public boolean equals(@Nullable Object obj)
equals
in class Object
obj
- the object to test for equality with this object.obj
is null or otherwise.Object.hashCode()
,
HashMap
public String getAlgorithm()
getAlgorithm
in interface Key
public byte[] getEncoded()
getEncoded
in interface Key
public String getFormat()
public int hashCode()
hashCode
in class Object
Object.equals(java.lang.Object)
,
System.identityHashCode(java.lang.Object)
public boolean isDestroyed()
Destroyable
Object
has been destroyed.
The default implementation returns false.
isDestroyed
in interface Destroyable
Object
has been destroyed, false otherwise.