Java ile MD5 Nasıl Yapılır
string, security, java June 12th, 2007
![]()
MD5
Evet O yEAH! : 8125627d199530c90ae619cf3e6b06f9
CEO ‘mun - (Ceyo diye okuyor kendisi) istegi üzerine ilk ve umarim son olmayacak yazima
basliyorum arkadaslar. R U ready!!!! DIT DIT
Bugunku konumuz MD5-SHA1 hashing. Ne lan bu diyenler için önce bir
nerde nasil kullanilir mantigi nedir vs gibi islemleri anlaticam.
Evet basliyalim…
Nedir bu MD5 ? Yenir mi?
MD5 bir hashing algoritmasidir. Algoritmanin detayi icin
http://www.faqs.org/rfcs/rfc1321.html
adresinden gorebilirsiniz.
Hashing nedir?
Hashing denilen sey hash üretme islemidir. Puha bu mudur yane diyen cok olmustur herhalde.
Belli bir stringden(text) belli bir algoritma ile belli uzunlukda bir String elde etmeye yarar.
Fakat her stringden farkli bir hash olusur. Ayri stringden ayni hashler OLUSAMAZ (diyorlarki 2^128 de 1 ihtimal falan)
CEO muz gecen gunku code campimizda ayni hashe sahip iki farkli dosya bulundugunu soyledi.
Ben halen gormeden inanmam diyenlerdenim :)
MD5 128-bit digest SHA1 ise 160-bit digest olustur.
Evet simdi ana hatlari aldik. Bilmemiz gereken son sey ise bu encyrption tek yonludur. Hashe donusen veri geri dondurulemez.
Nerelerde kullanilir.
En onemli alanlari clear text tutulan passwordlerde olabilir. Mesela database a username password bilgisini tutucaz.
password kolonunu clear text tuttugumuz zaman sistem bir sekilde indirilirse texte hemen ulasilir en azindan bu veriye kadar
ulasabilcek adami biraz urastirmak lazim diye dusunuyorum.Sniff edildiginde veriler gorulse de Tam ne oldugu cözülemez. Client side da javascriptle bile md5 yapabildiginize gore bu iyi bisi…
Databasedeki hashli veri bu hashlenmis veriyle karsilastirilir.
Ikinci en onemli alani ise dosyalarin checksumi olarak kullanilir dosyanin degistirilip degistirilmedigini anlamak icin
kullanilabilinir. Bir mesajin integritysini cozmeye birebirdir. O yuzden Signing(Emaildeki signing) de de kullanılır.
UFFFF Amma cok annattin lan diyenlere daha anlatasim var ama artik biraz da security manyaklarindan cikip JAVA (cavaaaa diye okuyunuz)
manyakligina donelim.
iste size cok kucuk bir kod..
package md5;
import java.security.MessageDigest;
public class Md5Test
{
public Md5Test()
{
}
public String createMd5Hash(String hashingAlgorithm,String stringToMd5)
{
String plainText;
StringBuffer hexString = new StringBuffer();
try
{
MessageDigest md=MessageDigest.getInstance(hashingAlgorithm);
//Pazara gidelim bir digest alalim — SHA1,MD5 ….
md.update(stringToMd5.getBytes());
byte[] digest = md.digest();
for (int i = 0; i < digest.length; i++)
{
plainText = Integer.toHexString(0xFF & digest[i]);
if (plainText.length() < 2) {
plainText = “0″ + plainText;
}
hexString.append(plainText);
}
}
catch(Exception e )
{
e.printStackTrace();
}
return hexString.toString();
}
public static void main(String args[])
{
String s = “Hepinize secure ve javaaa dolu gunler dilegiyle.”;
Md5Test md5= new Md5Test();
System.out.print(md5.createMd5Hash(”MD5″,s));
}
}
Simdi birazda burda olan olaydan bahsedelim.
getInstance ile bir Message Digest alinir.Alirken hangi algoritmayi kullancagimizi soyledik.
Byte array olarak istedigimiz veriyi update fonksiyonu ile yolladik. ve digest() fonksiyonunu cagrirak
byte arraye kusturduk.//sevdim bu lafi //
Elimizde hash var artik. Bundan sonraki kisim byte arrayi hexStringe cevirmekle alakali.
“Hepinize secure ve javaaa dolu gunler dilegiyle.”
1d429c55ae2d7f4d7f180972ee1cb564
Social Bookmarking
July 25th, 2008 at 22:36
Öncelikle verdiğin bilginin çok işime yaradığını bunun için sana minnettar olduğumu belirteyim. Ama gördüğüm kadarı ile üslubun hiçde hoş değil. Çok labubali bir anlatım biçimin var(Espirilerden bahsetmiyorum). Biraz daha etik yazılar hazırlasan en azından ben hakkında “Vay helal be, işi iyi biliyor efendi bir insan 4×4 lük bir tip” diye düşüneceğim. Yardımın için teşekkürler.
İyi çalışmalar.
September 13th, 2008 at 20:45
selamlar, sahiden biraz daha düzgün bir türkçe kullansan hoş olur.
ikincisi; ayrı ayrı iki string’i hash işlemine soktuğun zaman aynı sonucu dönebilir. zaten hash işleminin mantığı budur. bu yüzden geri dönülemez olmaktadır.
örneklersek, ilk değişkenimiz, “qwerty” olsun ve ikinci değişkenimiz “zxcvbnm” olsun. ve bunların ikisini de hash algoritması ile işlediğimiz de aldığımız sonuç “PKLR567G” olsun. bu halde senin elinde “PKLR567G” gibi bir sonuç varsa, hangi ilk değere geri döneceğini bilmek imkansız olur. vs. vs.