- All Implemented Interfaces:
 Serializable,Key,KeySpec,SecretKey,Destroyable
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.
- Since:
 - 1.4
 - See Also:
 
- 
Constructor Summary
ConstructorsConstructorDescriptionSecretKeySpec(byte[] key, int offset, int len, String algorithm) Constructs a secret key from the given byte array, using the firstlenbytes ofkey, starting atoffsetinclusive.SecretKeySpec(byte[] key, String algorithm) Constructs a secret key from the given byte array. - 
Method Summary
Modifier and TypeMethodDescriptionbooleanTests for equality between the specified object and this object.Returns the name of the algorithm associated with this secret key.byte[]Returns the key material of this secret key.Returns the name of the encoding format for this secret key.inthashCode()Calculates a hash code value for the object.Methods declared in class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, waitMethods declared in interface javax.security.auth.Destroyable
destroy, isDestroyed 
- 
Constructor Details
- 
SecretKeySpec
Constructs a secret key from the given byte array.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
keyis 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 (in this case:DESKeySpec) should be used.- Parameters:
 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.- Throws:
 IllegalArgumentException- ifalgorithmis null orkeyis null or empty.
 - 
SecretKeySpec
Constructs a secret key from the given byte array, using the firstlenbytes ofkey, starting atoffsetinclusive.The bytes that constitute the secret key are those between
key[offset]andkey[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
keyis 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 (in this case:DESKeySpec) must be used.- Parameters:
 key- the key material of the secret key. The firstlenbytes of the array beginning atoffsetinclusive are copied to protect against subsequent modification.offset- the offset inkeywhere 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.- Throws:
 IllegalArgumentException- ifalgorithmis null orkeyis null, empty, or too short, i.e.key.length-offset<len.ArrayIndexOutOfBoundsException- is thrown ifoffsetorlenindex bytes outside thekey.
 
 - 
 - 
Method Details
- 
getAlgorithm
Returns the name of the algorithm associated with this secret key.- Specified by:
 getAlgorithmin interfaceKey- Returns:
 - the secret key algorithm.
 
 - 
getFormat
Returns the name of the encoding format for this secret key. - 
getEncoded
public byte[] getEncoded()Returns the key material of this secret key.- Specified by:
 getEncodedin interfaceKey- Returns:
 - the key material. Returns a new array each time this method is called.
 
 - 
hashCode
public int hashCode()Calculates a hash code value for the object. Objects that are equal will also have the same hashcode. - 
equals
Tests for equality between the specified object and this object. Two SecretKeySpec objects are considered equal if they are both SecretKey instances which have the same case-insensitive algorithm name and key encoding. 
 -