Base64 ve xor !!!

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

abi önemli olan kitleme yada silinme değil. ben kendi adıma gerilememeye yada germemeye dikkat ediyorum yada etmeye çalışıyorum. ama bir hatalı kod yapıştırılsın diye amuda kalkmadığımız kalktı hala biz suçlanıyoruz.

neyse vazgeçtim ben bu threadden ne hali varsa görsün:(
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Nick_
Üye
Mesajlar: 122
Kayıt: 01 Eki 2007 09:28
Konum: Konya

Mesaj gönderen Nick_ »

yaw ben bılsem nıye konu acmaya ugrasıpta soruyumkı.. bılmedıgım ıcın soruyorum zaten..ozel bı fırmada calısıyorum ve anlasma geregı kodların gızlı kalması gerekıyo..yukarda yapıstırdıgım kod deneme amaclı (konuyu kavramak ıcın).. sadece bu metın sıfreleme ve cozmesı kaldı..benım amacım base64 ve xor u beraber kullanabılırmıyım? kullanabılrsem nasıl?? kullanamazsam neden?? bu ıs bu kadar acıkken hala ve halaa kacıncı mesajın olmus hala acıklama ıstıyosun..

dıger forumlara benzetmek ıcın acmadım bu konuyu.. cozume ılıskın cevaplar yazarsanız sevınırım..Kolay gelsın
ikutluay
Üye
Mesajlar: 2341
Kayıt: 03 Tem 2007 10:13

Mesaj gönderen ikutluay »

sanırım dikkatten kaçırmışın sting tipini.

string tipinde 0. karakter o stringin boyunu verir... dolayısıyla sen foru ordan başlatınca stringi bozuyorsun ...
olsun ele alalım
gercekte dizilimi

3ali oluyor. 3 metnin boyu. sen donguleri 1 den başlat length ile bitir. sanırım düzelir. ama denemedim bu dediğimi.

bunları koders taki base64 için yazıyorum çünkü neyi encode için kullandın bilmiyorum
Kişi odur ki, koyar dünyada bir eser. Eseri olmayanın yerinde yeller eser./Muhammed Hadimi
http://www.ibrahimkutluay.net
http://www.ibrahimkutluay.net/blog
Kullanıcı avatarı
Nick_
Üye
Mesajlar: 122
Kayıt: 01 Eki 2007 09:28
Konum: Konya

Mesaj gönderen Nick_ »

suan deneme fırsatım yok ama ben sıfrelenecek metnı alttakı fonksıyonla alıyorum

Kod: Tümünü seç

function sifrele(const gelenmetin: WideString): WideString; safecall;
nasıl oluyorda 0. elemana deger almıyor ?
deltas
Üye
Mesajlar: 358
Kayıt: 06 Mar 2004 01:08
Konum: Malatya...
İletişim:

Mesaj gönderen deltas »

Merhaba Arkadaşlar.
@nick hocam kullandığınız unit hangisi bilmiyorum ancak dediğin şeyin şu anda opensource olarak var olan unit veya bileşenlerle yapmanızın mümün olacağını sanmıyorum. Şifrelemede sorun olmasada geri dönüş işleminde sorun çıkar. daha önce 1-2 saat uğreşmıştım ancak başarılı olmayınca bırakmıştım.
şu anda bi inceleme yaptımda
şifreleyeceğimiz metin "delphiturkiye" olsun.
XOR ile şifrelemede

Kod: Tümünü seç

TãMCۍPÕQïUù
sonra base64 ile şifrelersek şeklinde sonuç dönüyor.
çözmede ise;
d;ž€
anlamasız bir çözüm oluşuyor.

2. durumda ise ilk önce base64 ile şifreyelim:

Kod: Tümünü seç

uéi†+n®H²
bunu xor la şifreyelim:

Kod: Tümünü seç

B˜Ô+É<ô
çözdüğümüzde ise :

Kod: Tümünü seç

delphiturkiy
şeklinde çıkıyor. Burada da görüleceği gibi son karekter tekrardan çzöülmüyor.Bu kısmı pek inceleme vaktim olmamıştı ancak bunu şu şekilde halledebilirsiniz. kullanıcının girdiği karekteri şifre dışında ayrı bir alanda saklıyarak en son olarak string birleştirme işlemi yapabilir. Yada uniti inceliyerek bu hatayı siz düzeltebilirsiniz. Ancak epeyi bi uğraşmak lazım. ayrıca benim kullandığım unit bu işlem için asm kullanıyor.
Ben faststring kullanarak bu işelemi yaptım. daha önce forumda konuşulmuştu. Mege üstadımız forumda bi yerde link vermişti. unit olarak bunları projenizin uses kısmına eklemelisiniz.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
sifre:string;
a:word;
begin
a:=strtoint('12345678');
sifre:=Base64Decode(edit1.Text);
edit2.Text:=sifre;
edit3.Text:= Encrypt(sifre,a);

//sifre:=Encrypt(edit1.Text,a);
//edit2.Text:=sifre;
//edit3.Text:=Base64Decode(sifre);

end;

procedure TForm1.Button2Click(Sender: TObject);
var
coz:string;
a:word;
begin
a:=strtoint('12345678');

coz:= decrypt(edit3.Text,a);
edit2.Text:=coz;
edit1.Text:=Base64Encode(coz);

//coz:=Base64Encode(edit3.Text);
//edit2.Text:=coz;
//edit1.Text:=decrypt(coz,a);
end;
"/" işaretli olan kısımlar 1. durum için geçerli. aktif olan kodlar ise 2. durum için geçerli. Umarm işinizi görür.
Nice İnsanlar gördüm üstünde elbise yok;
Nice elbiseler gördüm içinde insan yok.
Kullanıcı avatarı
Nick_
Üye
Mesajlar: 122
Kayıt: 01 Eki 2007 09:28
Konum: Konya

Mesaj gönderen Nick_ »

S.a

@deltas hocam verdiğin bilgler için teşekkür ederim.
Bu iki yolu bende denedim ve anlaşılan baya sıkıntılı olacak.Birde FastString i deneyim bakalım ne olacak..Kolay gelsin
Cevapla