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