Search code examples
javabouncycastlesha256jce

Hash String via SHA-256 in Java


By looking around here as well as the internet in general, I have found Bouncy Castle. I want to use Bouncy Castle (or some other freely available utility) to generate a SHA-256 Hash of a String in Java. Looking at their documentation I can't seem to find any good examples of what I want to do. Can anybody here help me out?


Solution

  • To hash a string, use the built-in MessageDigest class:

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.nio.charset.StandardCharsets;
    import java.math.BigInteger;
    
    public class CryptoHash {
      public static void main(String[] args) throws NoSuchAlgorithmException {
        MessageDigest md = MessageDigest.getInstance("SHA-256");
        String text = "Text to hash, cryptographically.";
    
        // Change this to UTF-16 if needed
        md.update(text.getBytes(StandardCharsets.UTF_8));
        byte[] digest = md.digest();
    
        String hex = String.format("%064x", new BigInteger(1, digest));
        System.out.println(hex);
      }
    }
    

    In the snippet above, digest contains the hashed string and hex contains a hexadecimal ASCII string with left zero padding.