public class SecretKeySpec extends Object implements KeySpec, SecretKey
Since this class implements SecretKey
, which
in turn extends Key
, so instances of this class
may be passed directly to the init()
methods of Cipher
.
SecretKey
,
SecretKeyFactory
,
Serialized FormConstructor and Description |
---|
SecretKeySpec(byte[] key,
int off,
int len,
String algorithm)
Create a new secret key spec from part of a byte array.
|
SecretKeySpec(byte[] key,
String algorithm)
Create a new secret key spec from an entire byte array.
|
Modifier and Type | Method and Description |
---|---|
boolean |
equals(Object o)
Determine whether this Object is semantically equal
to another Object.
|
String |
getAlgorithm()
Return the name of the algorithm associated with this secret key.
|
byte[] |
getEncoded()
Return the key as a byte array.
|
String |
getFormat()
This key's format, which is always "RAW".
|
int |
hashCode()
Get a value that represents this Object, as uniquely as
possible within the confines of an int.
|
public SecretKeySpec(byte[] key, String algorithm)
key
- The key material.algorithm
- The name of the algorithm using this key.public SecretKeySpec(byte[] key, int off, int len, String algorithm)
key
- The key material.off
- The offset at which key material begins.len
- The length of key material.algorithm
- The name of the algorithm using this key.public String getAlgorithm()
getAlgorithm
in interface Key
public byte[] getEncoded()
getEncoded
in interface Key
public boolean equals(Object o)
Object
There are some fairly strict requirements on this
method which subclasses must follow:
a.equals(b)
and
b.equals(c)
, then a.equals(c)
must be true as well.a.equals(b)
and
b.equals(a)
must have the same value.a.equals(a)
must
always be true.a.equals(null)
must be false.a.equals(b)
must imply
a.hashCode() == b.hashCode()
.
The reverse is not true; two objects that are not
equal may have the same hashcode, but that has
the potential to harm hashing performance.This is typically overridden to throw a ClassCastException
if the argument is not comparable to the class performing
the comparison, but that is not a requirement. It is legal
for a.equals(b)
to be true even though
a.getClass() != b.getClass()
. Also, it
is typical to never cause a NullPointerException
.
In general, the Collections API (java.util
) use the
equals
method rather than the ==
operator to compare objects. However, IdentityHashMap
is an exception to this rule, for its own good reasons.
The default implementation returns this == o
.
equals
in class Object
o
- the Object to compare toObject.hashCode()
public int hashCode()
Object
There are some requirements on this method which
subclasses must follow:
a.equals(b)
is true, then
a.hashCode() == b.hashCode()
must be as well.
However, the reverse is not necessarily true, and two
objects may have the same hashcode without being equal.Notice that since hashCode
is used in
Hashtable
and other hashing classes,
a poor implementation will degrade the performance of hashing
(so don't blindly implement it as returning a constant!). Also,
if calculating the hash is time-consuming, a class may consider
caching the results.
The default implementation returns
System.identityHashCode(this)
hashCode
in class Object
Object.equals(Object)
,
System.identityHashCode(Object)