Java

Java-Şifreleme Yöntemi-MD5

Merhaba arkadaşlar. Bu yazıda MD5 ile Java’da şifreleme işleminin nasıl yapıldığını göreceğiz.

Aslında bu işlemi JSF’de aktivasyon maili gönderme ile ilgili yazının içinde anlatmayı planlıyordum ancak şifreleme işlemi Java’ya bağlı olduğu için bunu ayrı bir yazı ile anlatacağım ve buradaki yöntemi aktivasyon maili yazısında kullanacağım. Eğer bir vakit imkan bulabilirsem SHA-256 şifrelemesini burada bir örnekle yayınlayacağım inşaAllah. Şimdi örnek uygulamamızı inceleyelim. Açıklamasını  kodumuzun altında adım adım verdim arkadaşlar.

package md5calisma;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class MD5Calisma
{

public static void main(String[] args)
{
String parola = "kod5.net";
    
    try{
        MessageDigest messageDigestNesnesi = MessageDigest.getInstance("MD5");
        messageDigestNesnesi.update(parola.getBytes());
        byte messageDigestDizisi[] = messageDigestNesnesi.digest();
        StringBuffer sb16 = new StringBuffer();
        StringBuffer sb32 = new StringBuffer();
        for (int i = 0; i < messageDigestDizisi.length; i++) {
        sb16.append(Integer.toString((messageDigestDizisi[i] & 0xff) + 0x100, 16).substring(1));
        sb32.append(Integer.toString((messageDigestDizisi[i] & 0xff) + 0x100, 32));
 }
 System.out.println("Parolanın Şifrelenmiş Hali:(16) " + sb16.toString());
 System.out.println("Parolanın Şifrelenmiş Hali:(32) " + sb32.toString());
    catch(NoSuchAlgorithmException ex){
        System.err.println(ex);
    }
}
}
  • Şifrelenecek parola için kod5.net atamasını yapıyoruz.
  • MessageDigest messageDigestNesnesi = MessageDigest.getInstance(“MD5”); ifadesi ile kullanacağımız şifreleme yönteminin MD5 olduğunu bildiriyoruz.
  • messageDigestNesnesi.update(parola.getBytes()); ifadesi ile parola’yı bitlere dönüştürüp messageDigestNesnesi‘ne veriyoruz.
  • byte messageDigestDizisi[] = messageDigestNesnesi.digest(); ifadesi ile MD5 sonucunu yeni bitler halinde alıyoruz.
  • StringBuffer sb = new StringBuffer(); ifadesi ile şifrelenmiş veriyi tutacak nesneyi oluşturuyoruz.
  • Döngü içinde elimizde decimal olarak var olan messageDigestDizisi‘ni 16’lık tabana çeviriyoruz. Dönen bu Integer veriyi Integer.toString() ile string’e çeviriyoruz, ardından  substring(1) ile string’in ilk rakam ya da harfini atıyoruz ve geri kalanını append ile sürekli sb nesnesinin sonuna ekliyoruz. String’in ilk harf ya da rakamını atmamızın nedeni 16 tabanında işlem yaparsak dönen 3 haneli verilerin hep 1 ile başlıyor olmasıdır. Eğer 16 yerine 32 kullanırsanız substring(1) kullanmanıza gerek kalmaz.
  • Son olarak da Şifrelenmiş veriyi ekrana basıyoruz.

Ekran Çıktısı

Çıktıda göreceğiniz gibi 32 tabanında işlem yapıldığında substring(1) kullanmadığımız halde 16 tabanındaki ile sonuç aynı uzunlukta sonuç elde ettik.

16 ve 32'lik tabanlarda şifreleme işleminin sonuçları.

16 ve 32’lik tabanlarda şifreleme işleminin sonuçları.

 

 

 

 

 

 

 

 

 

 

Şifreleme işleminin en temel hali bu şekilde arkadaşlar. Yazılarımı iyileştirebilmem için eleştiri ve düşüncelerinizi yazının altındaki yorum kısmına yazmanızı rica ediyorum. Sağlıcakla kalın.

6 Yorum

  • MD5 ile şifreledik “Ekran Çıktısı” başlığı altında dediğiniz gibi bir çıktı aldık. Tekrar parola değişkenindeki ilk veriyi nasıl elde edebiliriz?

  • Elinize sağlık, güzel ve basit bir yöntem fakat bu şifreyi geri çözme olayı nasıl olacak?
    Mesela bu yöntemi kullanarak herhangi bir bilgiyi şifreledim ve veri tabanına yükledim sonradan kullanabilmek için nasıl geri çözeceğim?
    Bilgilendirme için şimdiden teşekkürler.

  • merhaba bana java ile girilen metni iki tür şifrelemeyle şifreleyecek vede bunu çözecek kod lazım yardımcı olabilirmisiniz

heyt için bir yanıt yazın X