gnu.javax.crypto.mac
Class UHash32
- IMac
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 called
NH
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:
-
UMAC: Message Authentication Code using Universal Hashing.
T. Krovetz, J. Black, S. Halevi, A. Hevia, H. Krawczyk, and P. Rogaway.
UHash32() - Trivial 0-arguments constructor.
|
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
UHash32
public UHash32()
Trivial 0-arguments constructor.
UHash32.java --
Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
This file is a part of GNU Classpath.
GNU Classpath is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or (at
your option) any later version.
GNU Classpath is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public License
along with GNU Classpath; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
USA
Linking this library statically or dynamically with other modules is
making a combined work based on this library. Thus, the terms and
conditions of the GNU General Public License cover the whole
combination.
As a special exception, the copyright holders of this library give you
permission to link this library with independent modules to produce an
executable, regardless of the license terms of these independent
modules, and to copy and distribute the resulting executable under
terms of your choice, provided that you also meet, for each linked
independent module, the terms and conditions of the license of that
module. An independent module is a module which is not derived from
or based on this library. If you modify this library, you may extend
this exception to your version of the library, but you are not
obligated to do so. If you do not wish to do so, delete this
exception statement from your version.