Class javax.crypto.Mac
java.lang.Object
|
+----javax.crypto.Mac
- public class Mac
- extends java.lang.Object
This class provides the functionality of a "message authentication code"
(MAC).
A MAC provides a way to check
the integrity of information transmitted over or stored in an unreliable
medium, based on a secret key. Typically, message
authentication codes are used between two parties that share a secret
key in order to validate information transmitted between these
parties.
A MAC mechanism that is based on cryptographic hash functions is
referred to as HMAC. HMAC can be used with any cryptographic hash function,
e.g., MD5 or SHA-1, in combination with a secret shared key. HMAC is
specified in RFC 2104.
Constructor Summary
|
Mac(MacSpi macSpi,
java.security.Provider provider,
java.lang.String algorithm)
Creates a MAC object.
|
Method Summary
|
java.lang.Object
|
clone()
Returns a clone if the provider implementation is cloneable.
|
byte[]
|
doFinal()
Completes this MAC computation and resets this Mac object
for further MAC computations with the same secret key.
|
void
|
doFinal(byte[] output,
int outOffset)
Completes this MAC computation and resets this Mac object
for further MAC computations with the same secret key.
|
byte[]
|
doFinal(byte[] input)
Processes the given array of bytes to complete this MAC computation
and resets this Mac object for further MAC computations
with the same secret key.
|
java.lang.String
|
getAlgorithm()
Returns the standard name of the MAC algorithm.
|
static Mac
|
getInstance(java.lang.String algorithm)
Generates an Mac object that implements the
specified MAC algorithm.
|
static Mac
|
getInstance(java.lang.String algorithm,
java.lang.String provider)
Generates an Mac object for the specified MAC
algorithm from the specified provider.
|
int
|
getMacLength()
Returns the length of the MAC in bytes.
|
java.security.Provider
|
getProvider()
Returns the provider of this Mac object.
|
void
|
init(java.security.Key key)
Initializes this Mac object with the given (secret) key.
|
void
|
init(java.security.Key key,
java.security.spec.AlgorithmParameterSpec params)
Initializes this Mac object with the given (secret) key and
algorithm parameters.
|
void
|
reset()
Resets this Mac object for further MAC computations
with the same secret key.
|
void
|
update(byte input)
Processes the given byte.
|
void
|
update(byte[] input)
Processes the given array of bytes.
|
void
|
update(byte[] input,
int offset,
int len)
Processes the first len bytes in input ,
starting at offset .
|
Methods inherited from class java.lang.Object
|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Mac
protected Mac(MacSpi macSpi,
java.security.Provider provider,
java.lang.String algorithm)
- Creates a MAC object.
- Parameters:
macSpi
- the delegate
provider
- the provider
algorithm
- the algorithm
getAlgorithm
public final java.lang.String getAlgorithm()
- Returns the standard name of the MAC algorithm.
See Appendix A in the
Java Cryptography Extension API Specification & Reference
for information about standard algorithm names.
- Returns:
- the standard algorithm name.
getInstance
public static final Mac getInstance(java.lang.String algorithm) throws java.security.NoSuchAlgorithmException
- Generates an
Mac
object that implements the
specified MAC algorithm.
If the default provider package provides an implementation of the
requested MAC algorithm, an instance of
Mac
containing that implementation is returned.
If the algorithm is not available in the default provider package,
other provider packages are searched.
- Parameters:
algorithm
- the standard name of the requested MAC algorithm.
See Appendix A in the
Java Cryptography Extension API Specification & Reference
for information about standard algorithm names.
- Returns:
- the new
Mac
object. - Throws:
- java.security.NoSuchAlgorithmException - if the requested MAC algorithm is
not available.
getInstance
public static final Mac getInstance(java.lang.String algorithm,
java.lang.String provider) throws java.security.NoSuchAlgorithmException, java.security.NoSuchProviderException
- Generates an
Mac
object for the specified MAC
algorithm from the specified provider.
- Parameters:
algorithm
- the standard name of the requested MAC algorithm.
See Appendix A in the
Java Cryptography Extension API Specification & Reference
for information about standard algorithm names.
provider
- the name of the provider.
- Returns:
- the new
Mac
object. - Throws:
- java.security.NoSuchAlgorithmException - if the requested MAC
algorithm is not available from the provider.
- java.security.NoSuchProviderException - if the requested provider is not
available.
- See Also:
- java.security.Provider
getProvider
public final java.security.Provider getProvider()
- Returns the provider of this
Mac
object.
- Returns:
- the provider of this
Mac
object.
getMacLength
public final int getMacLength()
- Returns the length of the MAC in bytes.
- Returns:
- the MAC length in bytes.
init
public final void init(java.security.Key key) throws java.security.InvalidKeyException
- Initializes this
Mac
object with the given (secret) key.
- Parameters:
key
- the (secret) key.
- Throws:
- java.security.InvalidKeyException - if the given key is inappropriate for
initializing this MAC.
init
public final void init(java.security.Key key,
java.security.spec.AlgorithmParameterSpec params) throws java.security.InvalidKeyException, java.security.InvalidAlgorithmParameterException
- Initializes this
Mac
object with the given (secret) key and
algorithm parameters.
- Parameters:
key
- the (secret) key.
params
- the algorithm parameters.
- Throws:
- java.security.InvalidKeyException - if the given key is inappropriate for
initializing this MAC.
- java.security.InvalidAlgorithmParameterException - if the given algorithm
parameters are inappropriate for this MAC.
update
public final void update(byte input) throws java.lang.IllegalStateException
- Processes the given byte.
- Parameters:
input
- the input byte to be processed.
- Throws:
- java.lang.IllegalStateException - if this
Mac
has not been
initialized.
update
public final void update(byte[] input) throws java.lang.IllegalStateException
- Processes the given array of bytes.
- Parameters:
input
- the array of bytes to be processed.
- Throws:
- java.lang.IllegalStateException - if this
Mac
has not been
initialized.
update
public final void update(byte[] input,
int offset,
int len) throws java.lang.IllegalStateException
- Processes the first
len
bytes in input
,
starting at offset
.
- Parameters:
input
- the input buffer.
offset
- the offset in input
where the input starts.
len
- the number of bytes to process.
- Throws:
- java.lang.IllegalStateException - if this
Mac
has not been
initialized.
doFinal
public final byte[] doFinal() throws java.lang.IllegalStateException
- Completes this MAC computation and resets this
Mac
object
for further MAC computations with the same secret key.
(In order to reuse this Mac
object with a
different secret key, init must be
called after this call has completed.)
- Returns:
- the MAC result.
- Throws:
- java.lang.IllegalStateException - if this
Mac
has not been
initialized.
doFinal
public final void doFinal(byte[] output,
int outOffset) throws ShortBufferException, java.lang.IllegalStateException
- Completes this MAC computation and resets this
Mac
object
for further MAC computations with the same secret key.
(In order to reuse this Mac
object with a
different secret key, init must be
called after this call has completed.)
The MAC result is stored in output
, starting at
outOffset
.
- Parameters:
output
- the buffer where the MAC result is stored
outOffset
- the offset in output
where the MAC is
stored
- Throws:
- ShortBufferException - if the given output buffer is too small
to hold the result
- java.lang.IllegalStateException - if this
Mac
has not been
initialized.
doFinal
public final byte[] doFinal(byte[] input) throws java.lang.IllegalStateException
- Processes the given array of bytes to complete this MAC computation
and resets this
Mac
object for further MAC computations
with the same secret key.
(In order to reuse this Mac
object with a
different secret key, init must be
called after this call has completed.)
- Returns:
- the MAC result.
- Throws:
- java.lang.IllegalStateException - if this
Mac
has not been
initialized.
reset
public final void reset()
- Resets this
Mac
object for further MAC computations
with the same secret key.
(In order to reuse this Mac
object with a
different secret key, init must be
called after this call has completed.)
clone
public final java.lang.Object clone() throws java.lang.CloneNotSupportedException
- Returns a clone if the provider implementation is cloneable.
- Returns:
- a clone if the provider implementation is cloneable.
- Throws:
- java.lang.CloneNotSupportedException - if this is called on a
delegate that does not support
Cloneable
. - Overrides:
- clone in class java.lang.Object