SHA-512 Verschlüsselung mit Java

Seit Java Version 1.4 gibt es den SHA-512 Hash-Algorithmus im java.security-Package. Damit ist es möglich, sehr sichere Verschlüsselungen mit 512-Bit zu erzeugen. Wie man einen SHA-512 Hashwert bildet, zeigt der folgende Code:

Beispiel:

CreatePassword.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.UnsupportedEncodingException;
import java.security.NoSuchAlgorithmException;
 
public class CreatePassword
{
    public static void main(String argv[])
    {
        try
        {
            String strTest = EncryptPassword.SHA512("Das hier ist eine SHA-Verschlüsselung mit 512 Bit.");
            System.out.println(strTest);    // 128 Zeichen
            String strTest2 = EncryptPassword.SHA512("...und das hier auch!");
            System.out.println(strTest2);   // 128 Zeichen
        }
        catch (NoSuchAlgorithmException ex)
        {
            System.out.println(ex.getMessage());
        }
        catch (UnsupportedEncodingException ex)
        {
            System.out.println(ex.getMessage());
        }
    }
}

EncryptPassword.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import java.io.UnsupportedEncodingException;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
 
public class EncryptPassword
{
    private static String convertToHex(byte[] data)
    {
        StringBuffer buf = new StringBuffer();
 
        for (int i = 0; i < data.length; i++)
        {
            int halfbyte = (data[i] >>> 4) & 0x0F;
            int two_halfs = 0;
            do
            {
                if ((0 <= halfbyte) && (halfbyte <= 9))
                    buf.append((char) ('0' + halfbyte));
                else
                    buf.append((char) ('a' + (halfbyte - 10)));
                halfbyte = data[i] & 0x0F;
            }
            while(two_halfs++ < 1);
        }
        return buf.toString();
    }
 
    public static String SHA512(String text)
    throws NoSuchAlgorithmException, UnsupportedEncodingException
    {
        MessageDigest md;
        md = MessageDigest.getInstance("SHA-512");
        byte[] sha1hash = new byte[40];
        md.update(text.getBytes("UTF-8"), 0, text.length());
        sha1hash = md.digest();
        return convertToHex(sha1hash);
    }
}