*
Arch Linux Türkiye Forum


Hoşgeldiniz Ziyaretçi. Lütfen giriş yapın veya kayıt olun.

Kullanıcı adınızı, şifrenizi ve aktif kalma süresini giriniz

Kyrpta 1562

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

İleti: 65
Kyrpta
« : 10 Temmuz 2012 - 09:44:06 »
ASCII Tablosu[/url]'na göre sayıya çevirir(Dec sütunu), ancak boşluk karakteri ASCII Tablosu'ndan farklı olarak 96 değerini alır. Sonra harflerden elde edilen sayılara 96 ile mod alma işlemi uygulanır ve 10 eklenir. Bu sayede 3 basamaklı sayılar 2 basamağa indirilir. Ardından Metin ve Şifre'nin sayısal değerleri toplanır. Burada önemli olan, Metin 10 karakterli ve Şifre de 5 karakterlidir. Bu yüzden toplama işleminde şu şekilde yapılır:


Kod: [Seç]

Metin (Harf):|a |b |c |d |e |f |g |h |i |z
Metin (Sayı):|11|12|13|14|15|16|17|18|19|36

Şifre (Harf):|a |b |c |d |z
Şifre (Sayı):|11|12|13|14|36


Toplama İşlemi:

Metin (Sayı):|11|12|13|14|15|16|17|18|19|36
Şifre (Sayı):|11|12|13|14|36|11|12|13|14|36
Toplam      :|22|24|26|28|51|27|29|31|33|72

Örnekte Şifre(Sayı)'nın yan yana olacak biçimde 2 kez kullanıldığına dikkat ediniz



Yukarıdaki örnekte toplam, Şifrelenmiş Metin'dir. Kullanıcı Şifrelenmiş Metin'i, Şifre'yi kullanarak çözebilir.

Şifre 5 karakterli olduğundan ve İngiliz alfabesi kullandığından, 11 881 376 farklı kombinasyonu destekler (ancak ben Kyrpta'nın bu kadar güvenli olduğunu sanmıyorum :) ).





Hakkında:
Kod: [Seç]

#Kyrpta v0.3

[0] Hakkında
[1] Şifreleme
[2] Çözme
[3] Çıkış
[?] Komut: 0

Kyrpta v0.3
Lisans: "GNU General Public License Version 3"
Zu Hans und Heidi Behnke, wer sind von Koeln, von Bora.




Şifreleme:
Kod: [Seç]

#Kyrpta v0.3

[0] Hakkında
[1] Şifreleme
[2] Çözme
[3] Çıkış
[?] Komut: 1

[#] Limit: |||||||||| [10]
[<] Metin: arch linux

[#] Limit: ||||| [5]
[<] Şifre: alper

[>] Çıktı: 22 50 39 33 38 33 41 50 46 62




Çözme:
Kod: [Seç]

#Kyrpta v0.3

[0] Hakkında
[1] Şifreleme
[2] Çözme
[3] Çıkış
[?] Komut: 2

[<] 1: 22
[<] 2: 50
[<] 3: 39
[<] 4: 33
[<] 5: 38
[<] 6: 33
[<] 7: 41
[<] 8: 50
[<] 9: 46
[<] 10: 62
[<] Şifre: alper
[>] Çıktı: arch linux




Çıkış:
Kod: [Seç]

#Kyrpta v0.3

[0] Hakkında
[1] Şifreleme
[2] Çözme
[3] Çıkış
[?] Komut: 3
Zu Hans und Heidi Behnke, wer sind von Koeln, von Bora.

------------------
(program exited with code: 0)
Press return to continue






Programın henüz oldukça ham olduğunu belirtmek isterim.



Hedeflerimi gerçekleştirmemde bana yardımcı olursanız çok memnun olurum.  :)

Hedeflerim:

-> Şifreli Sayılar'ın otomatik olarak basamaklarına ayrılması:

->-> v0.3'te kullanıcı, Şifreli Sayılar'ı 2'li girmek zorunda (Örneklere bakınız).

-> Şifrelenecek Metin'in karakter limitini 10'dan 140'a çıkarmak:

->-> Bknz: Twitter

-> Performans iyileştirmeleri.

-> Yeni ve daha güvenli bir şifreleme yöntemi.



Programı geliştirirken lütfen biçimlemeye dikkat ediniz:

-> Boşluk karakteri yerine Tab kullanın.

-> Tab = 4 Boşluk

-> Kodun içine açıklama yerleştirin.

-> Köşeli parantezlerin yerlerine dikkat edin.




Kod: [Seç]

/* Zu Hans und Heidi Behnke, wer sind von Koeln, von Bora. */

#include <stdio.h>

int main(){
int komut, i=1, e=2, ascii[11], sifre[6], sif_mis[13];
char harf[11];

printf ("#Kyrpta v0.3");

baslangic:
printf ("nn[0] Hakkından");
printf ("[1] Şifrelemen");
printf ("[2] Çözmen");
printf ("[3] Çıkışn");
printf ("[?] Komut: ");
scanf ("%d", &komut);

if (komut == 0){
printf ("nKyrpta v0.3n");
printf ("Lisans: "GNU General Public License Version 3"n");
printf ("Zu Hans und Heidi Behnke, wer sind von Koeln, von Bora.");

goto baslangic;
}

if (komut == 1){
printf ("n[#] Limit: |||||||||| [10]");
printf ("n[<] Metin: ");
scanf ("%c%c%c%c%c%c%c%c%c%c%c", &harf[1], &harf[2], &harf[3], &harf[4], &harf[5], &harf[6], &harf[7], &harf[8], &harf[9], &harf[10], &harf[11]);

for (i = 2; i <= 11; i++){
if (harf[i] == ' '){ /* Boşluk karakterinin değeri ASCII tablosundan farklı olarak 96(DEC) atanıyor. */
ascii[i] = 96;
goto bosluk;
}
ascii[i] = harf[i];

bosluk:
ascii[i] = (ascii[i] % 96) +10;
}

printf ("n[#] Limit: ||||| [5]");
printf ("n[<] Şifre: ");
scanf ("%c%c%c%c%c%c", &harf[1], &harf[2], &harf[3], &harf[4], &harf[5], &harf[6]);

for (i = 2; i <= 6; i++){
sifre[i] = harf[i];
sifre[i] = (sifre[i] % 96) +10;
}

for (i = 2; i <= 11; i++){
if (e > 6){
e=2;
}
ascii[i] = ascii[i] + sifre[e];

e++;
}

printf ("n[>] Çıktı: %d %d %d %d %d %d %d %d %d %d", ascii[2], ascii[3], ascii[4], ascii[5], ascii[6], ascii[7], ascii[8], ascii[9], ascii[10], ascii[11]);

goto baslangic;
}

if (komut == 2){
printf ("n");

for (i = 1; i <= 10; i++){ /* Şifreli sayıları 2'li giriniz */
printf ("[<] %d: ", i);
scanf ("%d", &sif_mis[i]);
}

printf ("[<] Şifre: ");
scanf ("%c%c%c%c%c%c", &harf[1], &harf[2], &harf[3], &harf[4], &harf[5], &harf[6]);

e=1;
for (i = 2; i <= 6; i++){
sifre[e] = harf[i];
e++;
}

for (i = 1; i <= 6; i++)
sifre[i] = (sifre[i] % 96) +10;

e=1;
for (i = 1; i <= 10; i++){
if (e > 5){
e=1;
}
sif_mis[i] = sif_mis[i] - sifre[e];
e++;
}

for (i = 1; i <= 10; i++){
if (sif_mis[i] == 10) /* "else if" ifadelerini geçmek için 166. satıra gidin */
harf[i] = ' ';

else if (sif_mis[i] == 11)
harf[i] = 'a';

else if (sif_mis[i] == 12)
harf[i] = 'b';

else if (sif_mis[i] == 13)
harf[i] = 'c';

else if (sif_mis[i] == 14)
harf[i] = 'd';

else if (sif_mis[i] == 15)
harf[i] = 'e';

else if (sif_mis[i] == 16)
harf[i] = 'f';

else if (sif_mis[i] == 17)
harf[i] = 'g';

else if (sif_mis[i] == 18)
harf[i] = 'h';

else if (sif_mis[i] == 19)
harf[i] = 'i';

else if (sif_mis[i] == 20)
harf[i] = 'j';

else if (sif_mis[i] == 21)
harf[i] = 'k';

else if (sif_mis[i] == 22)
harf[i] = 'l';

else if (sif_mis[i] == 23)
harf[i] = 'm';

else if (sif_mis[i] == 24)
harf[i] = 'n';

else if (sif_mis[i] == 25)
harf[i] = 'o';

else if (sif_mis[i] == 26)
harf[i] = 'p';

else if (sif_mis[i] == 27)
harf[i] = 'q';

else if (sif_mis[i] == 28)
harf[i] = 'r';

else if (sif_mis[i] == 29)
harf[i] = 's';

else if (sif_mis[i] == 30)
harf[i] = 't';

else if (sif_mis[i] == 31)
harf[i] = 'u';

else if (sif_mis[i] == 32)
harf[i] = 'v';

else if (sif_mis[i] == 33)
harf[i] = 'w';

else if (sif_mis[i] == 34)
harf[i] = 'x';

else if (sif_mis[i] == 35)
harf[i] = 'y';

else if (sif_mis[i] == 36)
harf[i] = 'z';

else
printf ("[!] Satır: 94");
}

printf ("[>] Çıktı: ");
for (i = 1; i <= 10; i++){
printf ("%c", harf[i]);
}
goto baslangic;
}

if (komut == 3)
printf ("Zu Hans und Heidi Behnke, wer sind von Koeln, von Bora.");

return 0;
}

Bu program Köln'deki misafir ailem olan Hans ve Heidi Behnke'ye ithaf edilmiştir.
« Son Düzenleme: 01 Ocak 1970 - 02:00:00 Gönderen: Guest »

Newbie İleti: 26 *
Re: Kyrpta
« Yanıtla #1 : 11 Temmuz 2012 - 20:05:15 »
Eline sağlık güzel olmuş ama ifli yapı yerine switch yapısı performans olarak daha uygun olurdu sanırım. Ama bu seviyede bir program için çok da sorun olmaz sanırım. Mantıksal olarak da güzel ama sistematik kırma çalışmalarıyla kolaylıkla şifre bilinmeden de kırılabilecek bir şifreleme yöntemi. ama oldukça güzel temel için..
« Son Düzenleme: 01 Ocak 1970 - 02:00:00 Gönderen: Guest »

özgürlük için..