SHA256は、jdkの MessageDigest クラスを使用して生成できます。
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.reset();
digest.update(input.getBytes("utf8"));
toReturn = String.format("%064x", new BigInteger(1, digest.digest()));
余分なJavaライブラリを使用せずにSHA-512を生成することもできます。
MessageDigest digest = MessageDigest.getInstance("SHA-512");
digest.reset();
digest.update(input.getBytes("utf8"));
toReturn = String.format("%0128x", new BigInteger(1, digest.digest()));
次のコードは、 "this is an example"を入力として使用し、SHA-2ハッシュ関数を使用してSHA256とSHA512を作成します。 最初の2つのメソッドは、ハッシュ関数ごとに1つずつ作成されます。 最初はSHA-256用で、 MessageDigest クラスを使用してハッシュを生成します。 2番目の方法は同じ方法で作成されますが、SHA-512を使用します。 Apacheコモンズから DigestUtils クラスでハッシュを生成する出力を検証します。 生成されたすべてのハッシュは、コンソールに書き込まれます。
import java.math.BigInteger;
import java.security.MessageDigest;
public class SHA2 {
public static String getSHA256(String input){
String toReturn = null;
try {
MessageDigest digest = MessageDigest.getInstance("SHA-256");
digest.reset();
digest.update(input.getBytes("utf8"));
toReturn = String.format("%064x", new BigInteger(1, digest.digest()));
} catch (Exception e) {
e.printStackTrace();
}
return toReturn;
}
public static String getSHA512(String input){
String toReturn = null;
try {
MessageDigest digest = MessageDigest.getInstance("SHA-512");
digest.reset();
digest.update(input.getBytes("utf8"));
toReturn = String.format("%0128x", new BigInteger(1, digest.digest()));
} catch (Exception e) {
e.printStackTrace();
}
return toReturn;
}
public static void main(String[] argv) {
String inputValue = "this is an example";
// With the java libraries
String sha256 = getSHA256(inputValue);
System.out.println("The SHA-256 of \"" + inputValue + "\" is:");
System.out.println(sha256);
System.out.println();
// With Apache commons
sha256 = org.apache.commons.codec.digest.DigestUtils.sha256Hex(inputValue);
System.out.println("The SHA-256 of \"" + inputValue + "\" is:");
System.out.println(sha256);
System.out.println();
// With the java libraries
String sha512 = getSHA512( inputValue );
System.out.println("The SHA-512 of \"" + inputValue + "\" is:");
System.out.println(sha512);
System.out.println();
// With Apache commons
sha512 = org.apache.commons.codec.digest.DigestUtils.sha512Hex(inputValue);
System.out.println("The SHA-512 of \"" + inputValue + "\" is:");
System.out.println(sha512);
}
}
The SHA-256 of "this is an example13" is: 066f61646a92c8cf04943577b3c4d9ee6e5d125fe850b4c8c4d315ddd3aa1f50 The SHA-256 of "this is an example13" is: 066f61646a92c8cf04943577b3c4d9ee6e5d125fe850b4c8c4d315ddd3aa1f50 The SHA-512 of "this is an example4" is: 05c1649335528b45ab4965619db876e5090e42dfc526b486dde9368df2b77830c4e523cee1fd0054d9009729a6a11e697a1dd121e36be3ada593b8d76cb80ced The SHA-512 of "this is an example4" is: 05c1649335528b45ab4965619db876e5090e42dfc526b486dde9368df2b77830c4e523cee1fd0054d9009729a6a11e697a1dd121e36be3ada593b8d76cb80ced