public class CryptoUtil extends Object
Constructor | Description |
---|---|
CryptoUtil() |
Modifier and Type | Method | Description |
---|---|---|
static byte[] |
hi(SecretKeyFactory secretKeyFactory,
int keyLength,
String value,
byte[] salt,
int iterations) |
Compute the "Hi" function for SCRAM.
|
static byte[] |
hmac(SecretKeySpec secretKeySpec,
Mac mac,
byte[] message) |
Computes the HMAC of a given message.
|
static String |
nonce(int size) |
Generates a random string (called a 'nonce'), composed of ASCII printable characters, except comma (',').
|
static String |
nonce(int size,
SecureRandom random) |
Generates a random string (called a 'nonce'), composed of ASCII printable characters, except comma (',').
|
static byte[] |
xor(byte[] value1,
byte[] value2) |
Computes a byte-by-byte xor operation.
|
public static String nonce(int size, SecureRandom random)
size
- The length of the nonce, in characters/bytesrandom
- The SecureRandom to usepublic static String nonce(int size)
size
- The length of the nonce, in characters/bytespublic static byte[] hi(SecretKeyFactory secretKeyFactory, int keyLength, String value, byte[] salt, int iterations)
Hi(str, salt, i):
U1 := HMAC(str, salt + INT(1))
U2 := HMAC(str, U1)
...
Ui-1 := HMAC(str, Ui-2)
Ui := HMAC(str, Ui-1)
Hi := U1 XOR U2 XOR ... XOR Ui
where "i" is the iteration count, "+" is the string concatenation
operator, and INT(g) is a 4-octet encoding of the integer g, most
significant octet first.
Hi() is, essentially, PBKDF2 [RFC2898] with HMAC() as the
pseudorandom function (PRF) and with dkLen == output length of
HMAC() == output length of H().
secretKeyFactory
- The SecretKeyFactory to generate the SecretKeykeyLength
- The length of the key (in bits)value
- The String to compute the Hi functionsalt
- The saltiterations
- The number of iterationspublic static byte[] hmac(SecretKeySpec secretKeySpec, Mac mac, byte[] message)
HMAC(key, str): Apply the HMAC keyed hash algorithm (defined in
[RFC2104]) using the octet string represented by "key" as the key
and the octet string "str" as the input string. The size of the
result is the hash result size for the hash function in use. For
example, it is 20 octets for SHA-1 (see [RFC3174]).
secretKeySpec
- A key of the given algorithmmac
- A MAC instance of the given algorithmmessage
- The message to compute the HMACpublic static byte[] xor(byte[] value1, byte[] value2) throws IllegalArgumentException
XOR: Apply the exclusive-or operation to combine the octet string
on the left of this operator with the octet string on the right of
this operator. The length of the output and each of the two
inputs will be the same for this use.
value1
- value2
- IllegalArgumentException
Copyright © 2017–2018. All rights reserved.