Java SHA1 sha1ToHex(String input, String encoding)

Here you can find the source of sha1ToHex(String input, String encoding)

Description

sha To Hex

License

Open Source License

Declaration

public static String sha1ToHex(String input, String encoding) throws Exception 

Method Source Code


//package com.java2s;
import java.security.MessageDigest;

public class Main {
    /**/*from   w  w  w .j a v  a 2s  . c o  m*/
     * Used to build output as Hex
     */
    private static final char[] DIGITS_LOWER = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c',
            'd', 'e', 'f' };

    public static String sha1ToHex(String input, String encoding) throws Exception {
        byte[] digestResult = digest(input, "sha-1", encoding);
        return encodeHexString(digestResult);
    }

    private static byte[] digest(String input, String algorithm, String encoding) throws Exception {
        MessageDigest messageDigest = MessageDigest.getInstance(algorithm);
        return messageDigest.digest(input.getBytes(encoding));
    }

    /**
     * Converts an array of bytes into a String representing the hexadecimal values of each byte in order. The returned
     * String will be double the length of the passed array, as it takes two characters to represent any given byte.
     * 
     * @param data
     *            a byte[] to convert to Hex characters
     * @return A String containing hexadecimal characters
     * @since 1.4
     */
    public static String encodeHexString(byte[] data) {
        return new String(encodeHex(data));
    }

    /**
     * Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order.
     * The returned array will be double the length of the passed array, as it takes two characters to represent any
     * given byte.
     * 
     * @param data
     *            a byte[] to convert to Hex characters
     * @return A char[] containing hexadecimal characters
     */
    public static char[] encodeHex(byte[] data) {
        return encodeHex(data, true);
    }

    /**
     * Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order.
     * The returned array will be double the length of the passed array, as it takes two characters to represent any
     * given byte.
     * 
     * @param data
     *            a byte[] to convert to Hex characters
     * @param toLowerCase
     *            <code>true</code> converts to lowercase, <code>false</code> to uppercase
     * @return A char[] containing hexadecimal characters
     * @since 1.4
     */
    public static char[] encodeHex(byte[] data, boolean toLowerCase) {
        return encodeHex(data, DIGITS_LOWER);
    }

    /**
     * Converts an array of bytes into an array of characters representing the hexadecimal values of each byte in order.
     * The returned array will be double the length of the passed array, as it takes two characters to represent any
     * given byte.
     * 
     * @param data
     *            a byte[] to convert to Hex characters
     * @param toDigits
     *            the output alphabet
     * @return A char[] containing hexadecimal characters
     * @since 1.4
     */
    protected static char[] encodeHex(byte[] data, char[] toDigits) {
        int l = data.length;
        char[] out = new char[l << 1];
        // two characters form the hex value.
        for (int i = 0, j = 0; i < l; i++) {
            out[j++] = toDigits[(0xF0 & data[i]) >>> 4];
            out[j++] = toDigits[0x0F & data[i]];
        }
        return out;
    }
}

Related

  1. sha1sum(File file)
  2. sha1sum(File file)
  3. SHA1Sum(final @Nonnull byte[] bytes)
  4. sha1sum(final String data)
  5. sha1sum(InputStream file)
  6. sha1Utf8(String clearText)