Java暗号化-メッセージダイジェスト
ハッシュ関数は非常に便利で、ほとんどすべての情報セキュリティアプリケーションに表示されます。
ハッシュ関数は、数値入力値を別の圧縮された数値に変換する数学関数です。ハッシュ関数への入力は任意の長さですが、出力は常に固定長です。
ハッシュ関数によって返される値は呼び出されます message digest または単に hash values。次の図は、ハッシュ関数を示しています。
Javaはという名前のクラスを提供します MessageDigestこれは、パッケージjava.securityに属しています。このクラスは、SHA-1、SHA 256、MD5アルゴリズムなどのアルゴリズムをサポートして、任意の長さのメッセージをメッセージダイジェストに変換します。
特定のメッセージをメッセージダイジェストに変換するには、以下の手順に従います。
ステップ1:MessageDigestオブジェクトを作成する
MessageDigestクラスは、という名前のメソッドを提供します getInstance()。このメソッドは、使用するアルゴリズムの名前を指定するString変数を受け入れ、指定されたアルゴリズムを実装するMessageDigestオブジェクトを返します。
を使用してMessageDigestオブジェクトを作成します getInstance() 以下に示す方法。
MessageDigest md = MessageDigest.getInstance("SHA-256");
ステップ2:作成したMessageDigestオブジェクトにデータを渡す
メッセージダイジェストオブジェクトを作成した後、メッセージ/データをオブジェクトに渡す必要があります。あなたはを使用してそうすることができますupdate() の方法 MessageDigest クラスの場合、このメソッドはメッセージを表すバイト配列を受け入れ、それを上記で作成されたMessageDigestオブジェクトに追加/渡します。
md.update(msg.getBytes());
ステップ3:メッセージダイジェストを生成する
を使用してメッセージダイジェストを生成できます digest() MessageDigestクラスのメソッドこのメソッドは、現在のオブジェクトのハッシュ関数を計算し、バイト配列の形式でメッセージダイジェストを返します。
ダイジェストメソッドを使用してメッセージダイジェストを生成します。
byte[] digest = md.digest();
例
以下は、ファイルからデータを読み取り、メッセージダイジェストを生成して印刷する例です。
import java.security.MessageDigest;
import java.util.Scanner;
public class MessageDigestExample {
public static void main(String args[]) throws Exception{
//Reading data from user
Scanner sc = new Scanner(System.in);
System.out.println("Enter the message");
String message = sc.nextLine();
//Creating the MessageDigest object
MessageDigest md = MessageDigest.getInstance("SHA-256");
//Passing data to the created MessageDigest Object
md.update(message.getBytes());
//Compute the message digest
byte[] digest = md.digest();
System.out.println(digest);
//Converting the byte array in to HexString format
StringBuffer hexString = new StringBuffer();
for (int i = 0;i<digest.length;i++) {
hexString.append(Integer.toHexString(0xFF & digest[i]));
}
System.out.println("Hex format : " + hexString.toString());
}
}
出力
上記のプログラムは次の出力を生成します-
Enter the message
Hello how are you
[B@55f96302
Hex format: 2953d33828c395aebe8225236ba4e23fa75e6f13bd881b9056a3295cbd64d3