String Şifreleme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Nemesis2005
Üye
Mesajlar: 136
Kayıt: 18 Oca 2005 05:24
Konum: İzmir

String Şifreleme

Mesaj gönderen Nemesis2005 »

bir programda string belirli bir algoritma ile şifrelenmiş giren değerler ve çıkan değerlerle algoritmayı çözmeye çalıştım aşağıdaki gibi bir döngü ile işi çözdüm . algoritma herhangi bir standart fonksiyonu olan bir çevrimmi acaba bilen varsa yardımlarını bekliyorum

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
Sonuc,d:String;
j,m:integer;
h:Byte;
begin
  j:=12-length(edit1.Text);
  for m:=1 to length(edit1.Text) do
  begin
    d:=edit1.Text;
    h:=ORD(d[m]);

    if j<0 then
    begin
      Sonuc:=SONUC+CHR(h-23);
    end;
    if j>=0 Then
    begin
      Sonuc:=SONUC+CHR(h-j);
    end;
    j:=J-1;
  end;
  edit2.Text := Sonuc;
end;
Her iyinin içinde bir Kötülük.Her Kötnün içide de bir iyilik vardır
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Crack için burada yardım edilmez. Programın adı nedir?
ibr_ozdemir
Üye
Mesajlar: 25
Kayıt: 27 Nis 2005 02:09

Mesaj gönderen ibr_ozdemir »

:shock: yani elinde "ahmet" gibi açık bir metin ve şifrelenmiş hali vardı mesela "90k*-a"-,_" gibi bunu deneyerekmi buldun yoksa kullandığın bir metodmu var
varsa ve sakıncası yoksa versene :D
ikra
Üye
Mesajlar: 901
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Mesaj gönderen ikra »

söyle bir soru yönelteyim... sifrelenmis bir string i desifre mi etmek istiyorsun yoksa herhangi bir string i sifrelemek ve daha sonra desifrelemek mi istiyorsun?

eger sifreleme ve desifre etmeyi istiyorsan bunun icin bilgi verebilirim... eger baskasi tarafindan sifrelenmis bir string i desifre etmek istiyorsan üzgünüm : ))
kıdemsiz üye
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

txt şifreleme

Mesaj gönderen nosedive »

Programı bazı kayıtları txt de tutuyorum..bu txtleri şifreleyip..programda açınca deşifre etmek istiyorum....yani txtyi notepadde açınca başka biri saçma karakterler görecek...ama program o txt yi kendi şifrelediğin için deşifrede edip anlayabilecek...


bununla ilgili yardımcı olabilirseniz sevinirim...
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

Tşk

Mesaj gönderen nosedive »

Teşekkürler
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

yetersizlik

Mesaj gönderen nosedive »

iki tane memo nesnesi koydum ve bir buton ile bu şifrelemeyi çalıştırdım....Encrypt ve Decrypt fonksiyonları çalıştı..

Yalnız burda memo1 e 100-150 karakteri şifreledi.Fakat çok uzun bir string girdiğimde belli bir karakterden sonrasını şifrelemdi...Karakter adedini saymadım ama 150 civarında bir karakterden sonrasini şifrelemedi..Oysa benim şifreleyeceğim string 500 karakteri bile geçebilir..

Bu konuda yardımcı olabilirseniz sevinriim..

Tşk.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Döngü değişkeni byte olarak seçilmiş. Problem burada.

Bir de dynamic allocation'ın nimetlerinden faydalanmak ve istediğimiz büyüklükte string'ler için SetLength kullanmalıyız.

Kod: Tümünü seç

const
  C1 = 52845;
  C2 = 22719;

function Encrypt(const S: String; Key: Word): String;
var
  I: Integer;
begin
  SetLength(Result, Length(S));  
  for I := 1 to Length(S) do begin
    Result[I] := char(byte(S[I]) xor (Key shr 8));
    Key := (byte(Result[I]) + Key) * C1 + C2;
  end;
end; 

function Decrypt(const S: String; Key: Word): String;
begin
    Result:= Encrypt(S, Key);
end; 
Kullanıcı avatarı
nosedive
Üye
Mesajlar: 238
Kayıt: 16 May 2004 07:48

devam ediyor

Mesaj gönderen nosedive »

bu kodu denedinizmi ayni problem devam ediyor....belli adet string i sifreliyor....degisiklik yok yani
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Dönen değeri memo ya falan atıyorsan sorun ondan olur.Direk stream e atıp yazdıracaksın.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Veya daha basit bir versiyonu olan şu kodu kullan.

Kod: Tümünü seç

const
  Key = $FD;

function Encrypt(const S: String): String;
var
  I: Integer;
begin
  SetLength(Result, Length(S));
  for I := 1 to Length(S) do
    Result[I] := char(byte(S[I]) xor Key);
end;

function Decrypt(const S: String): String;
begin
  Result:= Encrypt(S);
end;
Cevapla