|
For the latest news and information visit The GNU Crypto project |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object
|
+--gnu.crypto.mac.BaseMac
|
+--gnu.crypto.mac.UHash32
UHASH is a keyed hash function, which takes as input a string of arbitrary length, and produces as output a string of fixed length (such as 8 bytes). The actual output length depends on the parameter UMAC-OUTPUT-LEN.
UHASH has been shown to be epsilon-ASU ("Almost Strongly Universal"), where epsilon is a small (parameter-dependent) real number. Informally, saying that a keyed hash function is epsilon-ASU means that for any two distinct fixed input strings, the two outputs of the hash function with a random key "look almost like a pair of random strings". The number epsilon measures how non-random the output strings may be.
UHASH has been designed to be fast by exploiting several architectural features of modern commodity processors. It was specifically designed for use in UMAC. But UHASH is useful beyond that domain, and can be easily adopted for other purposes. UHASH does its work in three layers. First, a hash function calledNH is used to compress input messages into strings which are
typically many times smaller than the input message. Second, the compressed
message is hashed with an optimized polynomial hash function into a
fixed-length 16-byte string. Finally, the 16-byte string is hashed using an
inner-product hash into a string of length WORD-LEN bytes. These three
layers are repeated (with a modified key) until the outputs total
UMAC-OUTPUT-LEN bytes.
References:
| Nested Class Summary | |
(package private) class |
UHash32.L1Hash32
First hash stage of the UHash32 algorithm. |
(package private) class |
UHash32.L2Hash32
Second hash stage of the UHash32 algorithm. |
(package private) class |
UHash32.L3Hash32
Third hash stage of the UHash32 algorithm. |
| Field Summary | |
(package private) UHash32.L1Hash32[] |
l1hash
|
(package private) int |
streams
|
| Fields inherited from class gnu.crypto.mac.BaseMac |
name, truncatedSize, underlyingHash |
| Fields inherited from interface gnu.crypto.mac.IMac |
MAC_KEY_MATERIAL, TRUNCATED_SIZE |
| Constructor Summary | |
UHash32()
Trivial 0-arguments constructor. |
|
| Method Summary | |
java.lang.Object |
clone()
Returns a clone copy of this instance. |
byte[] |
digest()
Completes the MAC by performing final operations such as padding and resetting the instance. |
void |
init(java.util.Map attributes)
Initialises the algorithm with designated attributes. |
int |
macSize()
Returns the output length in bytes of this MAC algorithm. |
void |
reset()
Resets the algorithm instance for re-initialisation and use with other characteristics. |
boolean |
selfTest()
A basic test. |
void |
update(byte b)
Continues a MAC operation using the input byte. |
void |
update(byte[] b,
int offset,
int len)
Continues a MAC operation, by filling the buffer, processing data in the algorithm's MAC_SIZE-bit block(s), updating the context and count, and buffering the remaining bytes in buffer for the next operation. |
| Methods inherited from class gnu.crypto.mac.BaseMac |
name |
| Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
int streams
UHash32.L1Hash32[] l1hash
| Constructor Detail |
public UHash32()
| Method Detail |
public java.lang.Object clone()
IMacReturns a clone copy of this instance.
clone in interface IMacclone in class BaseMacpublic int macSize()
IMacReturns the output length in bytes of this MAC algorithm.
macSize in interface IMacmacSize in class BaseMac
public void init(java.util.Map attributes)
throws java.security.InvalidKeyException,
java.lang.IllegalStateException
IMacInitialises the algorithm with designated attributes. Permissible names and values are described in the class documentation above.
init in interface IMacinit in class BaseMacattributes - a set of name-value pairs that describe the desired
future instance behaviour.
java.lang.IllegalStateException - if the instance is already initialised.
java.security.InvalidKeyException - if the key data is invalid.IMac.MAC_KEY_MATERIALpublic void update(byte b)
IMacContinues a MAC operation using the input byte.
update in interface IMacupdate in class BaseMacb - the input byte to digest.
public void update(byte[] b,
int offset,
int len)
IMacContinues a MAC operation, by filling the buffer, processing data in the algorithm's MAC_SIZE-bit block(s), updating the context and count, and buffering the remaining bytes in buffer for the next operation.
update in interface IMacupdate in class BaseMacb - the input block.offset - start of meaningful bytes in input block.len - number of bytes, in input block, to consider.public byte[] digest()
IMacCompletes the MAC by performing final operations such as padding and resetting the instance.
digest in interface IMacdigest in class BaseMacpublic void reset()
IMacResets the algorithm instance for re-initialisation and use with other characteristics. This method always succeeds.
reset in interface IMacreset in class BaseMacpublic boolean selfTest()
IMacA basic test. Ensures that the MAC of a pre-determined message is equal to a known pre-computed value.
selfTest in interface IMacselfTest in class BaseMactrue if the implementation passes a basic self-test.
Returns false otherwise.
|
For the latest news and information visit The GNU Crypto project |
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||