Java Şifreleme - İleti Özeti

Karma işlevler son derece kullanışlıdır ve neredeyse tüm bilgi güvenliği uygulamalarında görünür.

Karma işlevi, sayısal bir girdi değerini başka bir sıkıştırılmış sayısal değere dönüştüren matematiksel bir işlevdir. Hash fonksiyonunun girdisi keyfi uzunluktadır ancak çıktı her zaman sabit uzunluktadır.

Bir hash işlevi tarafından döndürülen değerler çağrılır message digest ya da sadece hash values. Aşağıdaki resim hash fonksiyonunu göstermektedir.

Java adlı bir sınıf sağlar MessageDigestjava.security paketine aittir. Bu sınıf, rasgele uzunluktaki bir mesajı bir mesaj özetine dönüştürmek için SHA-1, SHA 256, MD5 algoritmaları gibi algoritmaları destekler.

Verilen bir mesajı bir mesaj özetine dönüştürmek için, aşağıda verilen adımları izleyin -

Adım 1: Bir MessageDigest nesnesi oluşturun

MessageDigest sınıfı, getInstance(). Bu yöntem, kullanılacak algoritmanın adını belirten bir String değişkenini kabul eder ve belirtilen algoritmayı uygulayan bir MessageDigest nesnesi döndürür.

Kullanarak MessageDigest nesnesi oluşturun getInstance() yöntemi aşağıda gösterildiği gibi.

MessageDigest md = MessageDigest.getInstance("SHA-256");

Adım 2: Verileri oluşturulan MessageDigest nesnesine aktarın

Mesaj özeti nesnesini oluşturduktan sonra, mesajı / verileri ona iletmeniz gerekir. Bunu kullanarak yapabilirsinizupdate() yöntemi MessageDigest sınıfında, bu yöntem mesajı temsil eden bir bayt dizisini kabul eder ve bunu yukarıda oluşturulan MessageDigest nesnesine ekler / iletir.

md.update(msg.getBytes());

3. Adım: Mesaj özetini oluşturun

Mesaj özetini kullanarak digest() yöntem MessageDigest sınıfı bu yöntem, geçerli nesne üzerindeki karma işlevini hesaplar ve ileti özetini bayt dizisi biçiminde döndürür.

Özet yöntemini kullanarak mesaj özetini oluşturun.

byte[] digest = md.digest();

Misal

Aşağıda, bir dosyadan veri okuyan ve bir mesaj özeti oluşturan ve yazdıran bir örnek verilmiştir.

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());     
   }
}

Çıktı

Yukarıdaki program aşağıdaki çıktıyı üretir -

Enter the message
Hello how are you
[B@55f96302
Hex format: 2953d33828c395aebe8225236ba4e23fa75e6f13bd881b9056a3295cbd64d3