Gönderen Konu: md5 Åžifreleme  (Okunma sayısı 1306 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

barutali

  • Global Moderatör
  • *****
  • Rep: +34/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 1.152
  • Arkandan Bir Sigara Daha Yaktım ...
    • HerÅŸeyi bilen ÅŸey
md5 Åžifreleme
« : 30 Haziran 2009 22:05:49 »

İlk olarak aşağıdaki unit in tamamını kopyalayın ve projenizin olduğu klasöre md5.pas olarak kaydedin...

Kod: (delphi) [Seç]
unit MD5;

interface

type
Dizi= Array of integer;

function MD_5(str: string): string;

implementation

function rhex(num: integer): string;
var
str,hex_chr: string;
j: integer;
begin
hex_chr:='0123456789abcdef';
str:='';
for j:=0 to 3 do
str:=str+hex_chr[((num shr (j*8+4)) and $F)+1]+hex_chr[((num shr (j*8)) and $F)+1];
Result:=str;
end;

function str2blks_MD5(str: string): Dizi;
var
nblk: integer;
blks: Dizi;
i: integer;
begin
nblk:=((length(str)+8) shr 6)+1;
SetLength(blks,nblk*16);
for i:=0 to nblk*16-1 do blks[i]:=0;
for i:=0 to length(str)-1 do
blks[i shr 2]:=blks[i shr 2] or ((ord(str[i+1]) shl ((i mod 4)*8)));
blks[i shr 2]:=blks[i shr 2] or ($80 shl ((i mod 4)*8));
blks[nblk*16-2]:=length(str)*8;
Result:=blks;
end;

function add(x,y: integer): integer;
var
lsw,msw: integer;
begin
lsw:=(x and $FFFF)+(y and $FFFF);
msw:=(x shr 16)+(y shr 16)+(lsw shr 16);
Result:=(msw shl 16) or (lsw and $FFFF);
end;

function rol(num,cnt: integer): integer;
begin
Result:=(num shl cnt) or (num shr (32 - cnt));
end;

function cmn(q, a, b, x, s, t: integer): integer;
begin
Result:= add(rol(add(add(a, q), add(x, t)), s), b);
end;

function ff(a, b, c, d, x, s, t: integer): integer;
Begin
Result:= cmn((b and c) or ((not b) and d), a, b, x, s, t);
end;

function gg(a, b, c, d, x, s, t: integer): integer;
Begin
Result:= cmn((b and d) or (c and (not d)), a, b, x, s, t);
end;

function hh(a, b, c, d, x, s, t: integer): integer;
Begin
Result:= cmn(b xor c xor d, a, b, x, s, t);
end;

function ii(a, b, c, d, x, s, t: integer): integer;
Begin
Result:= cmn(c xor (b or (not d)), a, b, x, s, t);
end;

function MD_5(str: string): string;
var
x: dizi;
a,b,c,d,olda,oldb,oldc,oldd: integer;
i: integer;
begin
x:= str2blks_MD5(str);
a:= 1732584193;
b:= -271733879;
c:= -1732584194;
d:= 271733878;

i:=0;
while i<length(x) do

begin
olda := a;
oldb := b;
oldc := c;
oldd := d;

a := ff(a, b, c, d, x[i+ 0], 7 , -680876936);
d := ff(d, a, b, c, x[i+ 1], 12, -389564586);
c := ff(c, d, a, b, x[i+ 2], 17, 606105819);
b := ff(b, c, d, a, x[i+ 3], 22, -1044525330);
a := ff(a, b, c, d, x[i+ 4], 7 , -176418897);
d := ff(d, a, b, c, x[i+ 5], 12, 1200080426);
c := ff(c, d, a, b, x[i+ 6], 17, -1473231341);
b := ff(b, c, d, a, x[i+ 7], 22, -45705983);
a := ff(a, b, c, d, x[i+ 8], 7 , 1770035416);
d := ff(d, a, b, c, x[i+ 9], 12, -1958414417);
c := ff(c, d, a, b, x[i+10], 17, -42063);
b := ff(b, c, d, a, x[i+11], 22, -1990404162);
a := ff(a, b, c, d, x[i+12], 7 , 1804603682);
d := ff(d, a, b, c, x[i+13], 12, -40341101);
c := ff(c, d, a, b, x[i+14], 17, -1502002290);
b := ff(b, c, d, a, x[i+15], 22, 1236535329);

a := gg(a, b, c, d, x[i+ 1], 5 , -165796510);
d := gg(d, a, b, c, x[i+ 6], 9 , -1069501632);
c := gg(c, d, a, b, x[i+11], 14, 643717713);
b := gg(b, c, d, a, x[i+ 0], 20, -373897302);
a := gg(a, b, c, d, x[i+ 5], 5 , -701558691);
d := gg(d, a, b, c, x[i+10], 9 , 38016083);
c := gg(c, d, a, b, x[i+15], 14, -660478335);
b := gg(b, c, d, a, x[i+ 4], 20, -405537848);
a := gg(a, b, c, d, x[i+ 9], 5 , 568446438);
d := gg(d, a, b, c, x[i+14], 9 , -1019803690);
c := gg(c, d, a, b, x[i+ 3], 14, -187363961);
b := gg(b, c, d, a, x[i+ 8], 20, 1163531501);
a := gg(a, b, c, d, x[i+13], 5 , -1444681467);
d := gg(d, a, b, c, x[i+ 2], 9 , -51403784);
c := gg(c, d, a, b, x[i+ 7], 14, 1735328473);
b := gg(b, c, d, a, x[i+12], 20, -1926607734);

a := hh(a, b, c, d, x[i+ 5], 4 , -378558);
d := hh(d, a, b, c, x[i+ 8], 11, -2022574463);
c := hh(c, d, a, b, x[i+11], 16, 1839030562);
b := hh(b, c, d, a, x[i+14], 23, -35309556);
a := hh(a, b, c, d, x[i+ 1], 4 , -1530992060);
d := hh(d, a, b, c, x[i+ 4], 11, 1272893353);
c := hh(c, d, a, b, x[i+ 7], 16, -155497632);
b := hh(b, c, d, a, x[i+10], 23, -1094730640);
a := hh(a, b, c, d, x[i+13], 4 , 681279174);
d := hh(d, a, b, c, x[i+ 0], 11, -358537222);
c := hh(c, d, a, b, x[i+ 3], 16, -722521979);
b := hh(b, c, d, a, x[i+ 6], 23, 76029189);
a := hh(a, b, c, d, x[i+ 9], 4 , -640364487);
d := hh(d, a, b, c, x[i+12], 11, -421815835);
c := hh(c, d, a, b, x[i+15], 16, 530742520);
b := hh(b, c, d, a, x[i+ 2], 23, -995338651);

a := ii(a, b, c, d, x[i+ 0], 6 , -198630844);
d := ii(d, a, b, c, x[i+ 7], 10, 1126891415);
c := ii(c, d, a, b, x[i+14], 15, -1416354905);
b := ii(b, c, d, a, x[i+ 5], 21, -57434055);
a := ii(a, b, c, d, x[i+12], 6 , 1700485571);
d := ii(d, a, b, c, x[i+ 3], 10, -1894986606);
c := ii(c, d, a, b, x[i+10], 15, -1051523);
b := ii(b, c, d, a, x[i+ 1], 21, -2054922799);
a := ii(a, b, c, d, x[i+ 8], 6 , 1873313359);
d := ii(d, a, b, c, x[i+15], 10, -30611744);
c := ii(c, d, a, b, x[i+ 6], 15, -1560198380);
b := ii(b, c, d, a, x[i+13], 21, 1309151649);
a := ii(a, b, c, d, x[i+ 4], 6 , -145523070);
d := ii(d, a, b, c, x[i+11], 10, -1120210379);
c := ii(c, d, a, b, x[i+ 2], 15, 718787259);
b := ii(b, c, d, a, x[i+ 9], 21, -343485551);

a := add(a, olda);
b := add(b, oldb);
c := add(c, oldc);
d := add(d, oldd);

inc(i,16);
end;
Result:= rhex(a) + rhex(b) + rhex(c) + rhex(d);
end;

end.



Şimdi formun USES kısmına md5 i ekledikten sonra form üzerine 1 adet Tedit 1 adet Tlabel 1 adette Tbutton koyun Tbutton un onClick olayına aşağıdaki kodu yazmanız yeterli olucak...

Edit1 e yazmış olduğunuzu label ın caption ında MD5 olarak Şifreleyip göstericektir...


Kod: (delphi) [Seç]
Label1.Caption := MD_5(Edit1.Text);




« Son Düzenleme: 01 Åžubat 2010 13:38:01 Gönderen: barutali »
Kayıtlı
En İyi Öğrenme Metodu Yaparak Ve Yaşayaraktır. M.K.Atatürk.

selchuk

  • Kıdemli Üye
  • *****
  • Rep: +0/-0
  • Çevrimdışı Çevrimdışı
  • İleti: 90
Ynt: md5 Åžifreleme
« Yanıtla #1 : 29 Ocak 2010 23:24:12 »

Hocam Kolay Gelsin,

Ben denedim fakat Dephi7 'de 92 no'lu satırda (while i<length(x) do=""> olan satır) hata verdi.

Çalışan bir örneğiniz varsa gönderebilirmisiniz?

Teşekkürler.

Kayıtlı

barutali

  • Global Moderatör
  • *****
  • Rep: +34/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 1.152
  • Arkandan Bir Sigara Daha Yaktım ...
    • HerÅŸeyi bilen ÅŸey
Ynt: md5 Åžifreleme
« Yanıtla #2 : 30 Ocak 2010 09:09:24 »

bu kod renklendiriciyle ilgli bi sorun var :S:S

="">  bu kısmı silerek deneyin ..
Kayıtlı
En İyi Öğrenme Metodu Yaparak Ve Yaşayaraktır. M.K.Atatürk.

selchuk

  • Kıdemli Üye
  • *****
  • Rep: +0/-0
  • Çevrimdışı Çevrimdışı
  • İleti: 90
Ynt: md5 Åžifreleme
« Yanıtla #3 : 31 Ocak 2010 00:54:04 »

Evet hocam düzeldi.

Tabi geleneksel olarak 2. soru, geri nasıl alacağız?

Örneğin bir veriyi md5 ile şifreleyip veri tabanına kaydettik diyelim. O kaydı geri çağırdığımızda nasıl tekrar ilk haline döndürebiliriz.

Bu sorunumada yardımcı olursanız çok güzel bir şifreleme örneği olacak.

Saygılar, teşekkürler.
Kayıtlı

barutali

  • Global Moderatör
  • *****
  • Rep: +34/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 1.152
  • Arkandan Bir Sigara Daha Yaktım ...
    • HerÅŸeyi bilen ÅŸey
Ynt: md5 Åžifreleme
« Yanıtla #4 : 31 Ocak 2010 10:18:06 »

MD5 tek yönlü bir şifreleme algoritmasıdır...

ama diyorsanki ben adamın şifresini kaydettim md5 olarak şimdi adam kullanıcı adı şifresini girdiğinde nasıl doğru girmiş anlıcam diyorsan...

girilen şifreyi md5 e çevirip db deki md5 ile karşılaştırcaksın ...
Kayıtlı
En İyi Öğrenme Metodu Yaparak Ve Yaşayaraktır. M.K.Atatürk.

cakirr42

  • Kıdemli Üye
  • *****
  • Rep: +2/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 238
  • Halimi Anlayan Yok YaÅŸamak Ne Zor İş İmiÅŸ
    • ÇAKIRSOFT
Ynt: md5 Åžifreleme
« Yanıtla #5 : 31 Ocak 2010 11:07:22 »

saol ali abi güzel bi paylaşım olmuş ama bunu delphiye attığımda her satırın başında # çıktı bu kod renklendirici başımıza dert olcak :D ama bununla ilgili bi ufak yazılım yaparsak iyi olur kodu önce ona atarız o #leri siler sonrada delphiye
Kayıtlı
Ya Rab Bir Hilal Uğruna Ne Güneşler Batıyor (Mehmet Akif ERSOY)

http://cakirsoft.blogcu.com/

barutali

  • Global Moderatör
  • *****
  • Rep: +34/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 1.152
  • Arkandan Bir Sigara Daha Yaktım ...
    • HerÅŸeyi bilen ÅŸey
Ynt: md5 Åžifreleme
« Yanıtla #6 : 31 Ocak 2010 15:53:12 »


buna tıklarsan gerek kalmaz ...
Kayıtlı
En İyi Öğrenme Metodu Yaparak Ve Yaşayaraktır. M.K.Atatürk.

selchuk

  • Kıdemli Üye
  • *****
  • Rep: +0/-0
  • Çevrimdışı Çevrimdışı
  • İleti: 90
Ynt: md5 Åžifreleme
« Yanıtla #7 : 31 Ocak 2010 21:04:54 »

Girilen şifreyi md5 e çevirip db deki md5 ile karşılaştırınca oluyor. Teşekkürler.

Ben dahil kimse şifreyi göremiyor. (Tam güvenlik).

Unutulan ve şifre için ise bir yöntem buldum. Bilinen bir kelimeyi örneğin program adını md5 ile şifreleyip, şifresini unutan kullanıcının Db 'deki şifre alanına update etmek şeklinde bir çözümüm olacak. Böylece şifresini unutan kullanıcının yeni şifresi program adı yada belirlediğimiz kelime olacaktır.

Her kese kolay gelsin.
Kayıtlı

cakirr42

  • Kıdemli Üye
  • *****
  • Rep: +2/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 238
  • Halimi Anlayan Yok YaÅŸamak Ne Zor İş İmiÅŸ
    • ÇAKIRSOFT
Ynt: md5 Åžifreleme
« Yanıtla #8 : 31 Ocak 2010 22:43:56 »

o tuşu bilmiyodum :( 200 satırlık kodda parmaklarım yoruldu :D
Kayıtlı
Ya Rab Bir Hilal Uğruna Ne Güneşler Batıyor (Mehmet Akif ERSOY)

http://cakirsoft.blogcu.com/

muratboy31

  • Kıdemli Üye
  • *****
  • Rep: +0/-0
  • Çevrimdışı Çevrimdışı
  • İleti: 115
Ynt: md5 Åžifreleme
« Yanıtla #9 : 08 Åžubat 2010 14:19:48 »

peki md5 i normale nasıl tekrar döndürebilirim...
yane mesela murat ı md5 ile dönüştürdüm ve bu çıktı 5f311cc69460666eecc3e7289d14c2e8 peki ben bunu tekrar nasıl murat yapabilirim acaba ?
Kayıtlı

cakirr42

  • Kıdemli Üye
  • *****
  • Rep: +2/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 238
  • Halimi Anlayan Yok YaÅŸamak Ne Zor İş İmiÅŸ
    • ÇAKIRSOFT
Ynt: md5 Åžifreleme
« Yanıtla #10 : 08 Åžubat 2010 14:26:02 »

Alıntı
MD5 tek yönlü bir şifreleme algoritmasıdır...

ama diyorsanki ben adamın şifresini kaydettim md5 olarak şimdi adam kullanıcı adı şifresini girdiğinde nasıl doğru girmiş anlıcam diyorsan...

girilen şifreyi md5 e çevirip db deki md5 ile karşılaştırcaksın ...

bunun cevabı verildi zaten...
Kayıtlı
Ya Rab Bir Hilal Uğruna Ne Güneşler Batıyor (Mehmet Akif ERSOY)

http://cakirsoft.blogcu.com/

muratboy31

  • Kıdemli Üye
  • *****
  • Rep: +0/-0
  • Çevrimdışı Çevrimdışı
  • İleti: 115
Ynt: md5 Åžifreleme
« Yanıtla #11 : 08 Åžubat 2010 15:13:19 »

hayır ama ben karşılaştırma yapmayacam... mesela form açıldığımda edit 1 e md5 ile code edilmiş bir yazının normal halini yazdırmak istiyorum yane md5 decode gibi ama eğer tek yönlüyse muhtemelen mümkün değildir...
Kayıtlı

cakirr42

  • Kıdemli Üye
  • *****
  • Rep: +2/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 238
  • Halimi Anlayan Yok YaÅŸamak Ne Zor İş İmiÅŸ
    • ÇAKIRSOFT
Ynt: md5 Åžifreleme
« Yanıtla #12 : 08 Åžubat 2010 16:10:24 »

yani ozaman ya şifrelemeyin yada başka bir yöntem ile şifreleyin çünkü md5 güvenlik için kullanıldığından dolayı şifre çözülemez
Kayıtlı
Ya Rab Bir Hilal Uğruna Ne Güneşler Batıyor (Mehmet Akif ERSOY)

http://cakirsoft.blogcu.com/

muratboy31

  • Kıdemli Üye
  • *****
  • Rep: +0/-0
  • Çevrimdışı Çevrimdışı
  • İleti: 115
Ynt: md5 Åžifreleme
« Yanıtla #13 : 08 Åžubat 2010 16:13:07 »

blowfish yada buna benzer örnekler varmı forumda ?
Kayıtlı

cakirr42

  • Kıdemli Üye
  • *****
  • Rep: +2/-0
  • Çevrimdışı Çevrimdışı
  • Cinsiyet: Bay
  • İleti: 238
  • Halimi Anlayan Yok YaÅŸamak Ne Zor İş İmiÅŸ
    • ÇAKIRSOFT
Ynt: md5 Åžifreleme
« Yanıtla #14 : 08 Åžubat 2010 16:14:46 »

bilemiyorum forumda olmasa bile google a yaz bulursun ;)
Kayıtlı
Ya Rab Bir Hilal Uğruna Ne Güneşler Batıyor (Mehmet Akif ERSOY)

http://cakirsoft.blogcu.com/