de.alpharogroup.crypto.sha.Hasher Maven / Gradle / Ivy
/**
* Copyright (C) 2007 Asterios Raptis
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.alpharogroup.crypto.sha;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.security.InvalidKeyException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import org.apache.commons.codec.binary.Base64;
import de.alpharogroup.crypto.aes.HexEncryptor;
import de.alpharogroup.crypto.algorithm.HashAlgorithm;
import de.alpharogroup.random.Constants;
import de.alpharogroup.random.RandomExtensions;
/**
* The Class Hasher.
*
* @author Asterios Raptis
*/
public class Hasher
{
/**
* Gets the random salt.
*
* @param length
* the length
* @param charset
* the charset
* @return the random salt
*/
public static byte[] getRandomSalt(final int length, final Charset charset)
{
return RandomExtensions.getRandomString(Constants.LCUCCHARSWN, length).getBytes(charset);
}
/**
* Hash.
*
* @param hashIt
* the hash it
* @param salt
* the salt
* @param hashAlgorithm
* the hash algorithm
* @param charset
* the charset
* @return the string
* @throws NoSuchAlgorithmException
* is thrown if instantiation of the MessageDigest object fails.
*/
public static String hash(final String hashIt, final String salt,
final HashAlgorithm hashAlgorithm, final Charset charset) throws NoSuchAlgorithmException
{
final MessageDigest messageDigest = MessageDigest.getInstance(hashAlgorithm.getAlgorithm());
messageDigest.reset();
messageDigest.update(salt.getBytes(charset));
return new String(messageDigest.digest(hashIt.getBytes(charset)), charset);
}
public static String hashAndBase64(final String hashIt, final String salt,
final HashAlgorithm hashAlgorithm, final Charset charset) throws NoSuchAlgorithmException
{
final String hashedAndBase64 = new Base64().encodeToString(hash(hashIt, salt,
hashAlgorithm, charset).getBytes(charset));
return hashedAndBase64;
}
/**
* Hash and hex.
*
* @param hashIt
* the hash it
* @param salt
* the salt
* @param hashAlgorithm
* the hash algorithm
* @param charset
* the charset
* @return the string
* @throws NoSuchAlgorithmException
* is thrown if instantiation of the MessageDigest object fails.
* @throws UnsupportedEncodingException
* is thrown by get the byte array of the private key String object fails.
* @throws NoSuchPaddingException
* is thrown if instantiation of the cypher object fails.
* @throws InvalidKeyException
* the invalid key exception is thrown if initialization of the cypher object fails.
* @throws BadPaddingException
* is thrown if {@link Cipher#doFinal(byte[])} fails.
* @throws IllegalBlockSizeException
* is thrown if {@link Cipher#doFinal(byte[])} fails.
*/
public static String hashAndHex(final String hashIt, final String salt,
final HashAlgorithm hashAlgorithm, final Charset charset) throws NoSuchAlgorithmException,
InvalidKeyException, UnsupportedEncodingException, NoSuchPaddingException,
IllegalBlockSizeException, BadPaddingException
{
final HexEncryptor hexEncryptor = new HexEncryptor();
return hexEncryptor.encrypt(hash(hashIt, salt, hashAlgorithm, charset));
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy