Forumun tartışma ortamına dönmesine istemediğimden ben hala adam gibi cevap vermeyi (Tabii cevap hakkımı saklı tutarak) seçiyorum. cevabın içinde neyin neden olduğunu yazdım. Umarım bu sefer doğru anlaşılır. (ama hiç kimsede görmek istemeyen birisi kadar kör değildir.)
Öncelikle
Bir şeyi açıklayayım ; açıkça derdinizi yazın dedim.. çünkü bu işten biraz anlayan bir kişi bile base64 algoritmasının gerçekte çok sağlam algoritma olmadığını bilir.
Üsteik kullanım alanıda genelde bellirdir mail atachmentlar ve html auth durumları.
xor da key kullanıldığı için güvenli sanırılır ama brute force ile ataklara dayanacağı garanti değildir. (bu yönteme dayanacak şifrede yoktur. inanmayan dijital kaleyi okusun)
Şimdi ilk soruyu soran kişi eğer kullanıcı girişi yapacaksa bu forumu okuyan bir sürü insan ona sha1 yada md5 önerecektir. çünkü bunlar veriden bir sayı özeti üretirler ve verinin geri elde edilmesi hemen hemen imkansızdır.
ancak hedef bir dosyayı şifreleyip iletmekse durum daha farklıdır çünkü bu sefer dosyanın geriye açılması sorunu vardır. yani hangi vatandaş dosyasını şifreleyip gönderirde geri açılması istemez.
Ben arkadaşın bunu açıklamasını istedim arkadaş kendini 9 dağın efesi moduna sokarak "soru gayet açık" dedi.
Şimdi ben soruyorum gerçekten açıkmıymış ?
Tekrar gelelim ;
Base 64 algoritmasının çalışma mantığına soruyu soran bu nedir diye okumuşmudur bilemem ama base64 ile şifreleme yapılırken verinin 3 er byte lık gruplar halinde ele alınması durumu vardır. base64 sonucu oluşan verilerin uzunluğuda dördün katları şeklinde gider. Sonuçta oluşan kakterler 4ün katı uzunlukta değilse sonuna = karakterleri eklenir.
http://www.koders.com/delphi/fidE7154E1 ... spx?s=sha1
if (Length(S) mod 4)<> 0 then
raise Exception.Create('Base64: Incorrect string format');
Şimdi threade dönersem arkadaş bas64 ve x0r algoritması uyguladığını söylüyor ama hangi unitle bilmiyoruz. kod yok. o unitler bu kurala dikkat etmişmi haberimiz yok. çünkü bu untiler delphinin bir parçası değil. 3.parti. kim yazmış belli değil. kodu deneme şansımızda yok. (ama forumda bir sürü falcı var cam küremize bakar kodu da tahmin ederiz)
Tabi bu arada hala soruyu soran kişinin üstünde çalıştığı uyuglma nedir derdimiz nedir ondanda haberimiz yok.
Gelelim "hazır kod yapıştıranlara bile programcı denmesine" ;
yapıştırılan koddan başlayalım ;
Kod: Tümünü seç
a :=a+ char(byte(baseli[I]) xor Key1);
key ve a değerleri nedir nerde tanımlanmışlardır kod yazan HERKES bilir. çünkü KEY değerine her seferinde değer atanmak istenmiyorsa bu değişken farklı blokta tanımlanmalı. lokal tanımlanmışsa her ik blokta haliyle 2. de nul değerle başlayacak ancak hala KODUN tamamını göremediğimiz için bir şey deme şansımız yok.
Artı bel olsam parantezlerle grintilerdimki işlem önceliklerinde kafa karışmasın.
sonundada başlık şöyle bitiyor "hata nerde" eee şimdi ben soruyorum "biz nerden bilelim nerde "
Öncelikle uygulama nedir amaç nedir bilemliyiz ve kodunu görmeliyiz ki hatayı kontrol edelim. Kaldı ki amaç sadece veri şifrelemek içinse ve base64 ün ne olduğu bilinmeden bu işe girilmişse alternatifte önermişiz.
Kimseyide itham etmemişiz "sen bu işi bilmezsin. internetten kod alıp yapıştırırsın üste birde programcısın diyip gezersin" dememişiz. zaten işin aslı programcıyız da dememişiz.
başkaları vardır mesela bir şey yapınca kendini göklerde hisseder... ama ben örneğin csunguraya genelde usta diye hitap ederim. eski işimde sql de sıkıştığımda recep abinin yardımlarınıda unutmadım. tamam
as400 den dolayı yazdığı kodlar direkt çalışmıyordu ama ben tek bir sql cümlesi için onun önerisinin üstünden giderek notasyonu bulana kadar 6-7 saat uğraştığımı bilirim. ama sonuç ne oldu biliyormusunuz; bir uygulamam çalıştığında 18-30 dk arası sürerken (sql im yeterince iyi olmadığından bazı kayıtları döngüyle teker teker tekrar sorguluyordum) çalışması en son sql i öyle yazmıştımki 2-3 sn de bitiyordu.
Swissdelphicenter sitesinde bir sürü güzel ipucu vardı. ingilizcesi olmayanlar için en azından ne işer yaradıklarını başlığa yazıp siteye yapıştıralım Türkçe arayanlar karşılığını bulsun istedim. o bile kabahat oldu ancak konuya bakanlar görürki yapı itibarıyla bende daha bilgili arkadaşlar bile içlerinde işe yarayacak kodlar bulup teşekkür etmişler.
Ama aramıza yeni katılmış bir arkadaş soruyu düzgün sormadan forum kurallarını hiçe sayarak konular açma hakkını kendinde görebilmekte. Olsun umurumdada değil.. Ben gene copy paste yapacağım. belki bir gü vaktim olur detaylı metinlede açıklarım. bunu yaptığım gün "x hariç herkes içindir" yazmayacağım ama.
Artı bu forumdan kimse para kazanmıyor. mussimsek reklam dan 3-5 alıyorsa bile oda ancak hostinge yetiyordur. bu işten para kazanmıyorum, forumdada sadece bir üyeyim, kimin neden gözüne girmeye çalışayım. İyi kazandığım bir işim, bir ünvanım var. Ama işimin arasında bile gündüzleri girmeye çalışıyorum.
Zaten dikkat edilirse eskiden genelde sql soruları sorardım şimdi genelde cevap yazıyorum. Çünkü bu forum sadece insanlar gelip soru sorsun diye yok. bilenler cevapta yazsın diye var.
Son olarak 3 şey kaldı ;
1. Forum üyelerinin canını sıktıysam özür dilerim
2. Konuyu başlatan buna rağmen hala sorusunun açık olduğunu bizim bunu anlayamadığımızı iddia ediyorsa neden kimsenin hala cevabı bulamadığını merak ederim.
3. Vakti zamanında uygun olmayan durumlarda forum admin yada moderatörleri devreye girerdi. Acaba yanlış birşeyi benmi yapıyorum yada forumda "x hariç y dahil" tarzı konuşmalar normal mi sayılır oldu onuda birileri açıklasa sanırım fena olmayacak. (bu bir şikayet değildir. sadece forumda tartışma vs istemiyorum.