C De Şifreleme Üzerine Yardım
-
yaptıgım c calısmaları üzerinde şifreleme uygulamaları calısıorum
sayı biciminde şifre koyabiliorum fakat bunun belli bir aralık icindeki tüm sayılar 1 er 1 er artıralarak rahatlıkla cozulecegını bildigimden dolayı hem harf hem sayı şeklinde şifrelemek istiorum
rastgele harf nasıl üretirim şifreleme icin?rasgele sayı üretip bu sayıları harflere eşitlemek gbi bir düşüncem var ama nasıl uygulayacagım hakkında bilgi verirseniz sevınırım...
başka türlü şifreleme taktikleri hakkında yardımcı olursanız daha da cok sevinirim... -
Harfleri bir dizinin içine atarsın.Rastgele dizersin.Sonrada sayılarla yerlerini bulursun vs Örn dizinin içinde {T,C,W,A,K,L} gibi gidiyorsa 0 sayısına karşılık T 2'ye karşılık W gelir vs.Şifreleme tekniklerinde rastgele sayı üretilmesi söz konusu değildir.Çakışma yaratacağından.Gerisi sende bitiyor.Bir diziye karakter sayı vs at çarp böl topla sonuç dizideki herhangibir karaktere eşit olsun.
-
RSA mesela şoyle.
şurdan da bakabilirsin detayına burdakini az açıklayayım sana.
http://en.wikipedia.org/wiki/RSA
önce iki tane asal sayı seçeceksin. burda p=61 ile q=53 ü seçmiş. büyük asal sayı seçmemizin nedeni geri dönüştürmeye çalışan elemanlar için olasılık sayısını artırmak. java da biginteger sınıfını kullanarak 300 400 basamaklı asal sayılar seçersen sittin sene uğraşsa çözemez.
neyse asallarımızı seçtik. bu asalların çarpımından bir n sayısı elde edeceğiz. bu bizim şifreleyici anahtarın birinci elemanı olacak.
n=p*q=3233
şimdi bu asalların 1 er eksiği ile yeni bir çarpım elde edeceğiz bu da ln olsun.
ln=(p-1)*(q-1)= (61 − 1)(53 − 1) = 3120
şimdi bu 3120 sayısından küçük bi asal bulmamız lazım. buna de "e" diyeceğiz burdan elde edeceğimiz yeni asal şifreleyici ikinci anahtar olacak. burda e yi 17 seçmiş. [17,3233] bizim şifreleyici anahtarımız oldu.şimdi son olarak karşıdaki inasnların bizim mesajımızı cevirmek için kullanacakları çözücü anahtarı elde etmemiz lazım. şimdi bu 17 rakamını oyle bir sayı ile carpacaksınki "ln" ye göre mod aldığında 1 çıkacak.
17*2753 mod 3120=1 ediyor burdan 2753 ü seçmiş bu eleman. buna da "d" diyoruz. sen başka birşey seçebilirsin mod 1 olsun yeter.
[2753,3233] buda çözücü anahtarımız.
şimdi gelelim şifrelemeye. sen aldığın metni rakama cevirmen lazım. örneğin A=65 gibi. metnini rakama cevirdikten sonra.
metni şifreleyecen. örneğin burda 123 ü şifelemiş.
123^17mod3233=855
bunu şifreledin bunu ve çözücü anahtarını çözecek olan kişiye vermen lazım. oda bunu o anahtar ile çözecek.
855^2753mod3233=123 böylece veri çözülmüş oldu. aha da bu gelişmiş şifreleme algoritmalarından birinin anlatımıdır. -
burada bazı sayıları keyfi olarak seçtiğimiz değerleri ne kadar yüksek seçeresen çözmesi o derece zor olur ki. burda 855 sayısının alınan üssüne bakarsan bu buyuklukteki rakamları deneme yanılma yoluyla çözmek akıl işi değildir. burda önemli olan iki anahtarıda saklamak ve gerekli kişilerin bunsa sahip olduğunu bilmektir.
-
saolasın tagext rsa yı kriptoloji comda okumuştum 1 hafta once sanırım, ama kod olarak yazım bicimi hakkında bilgi verdigin icin saolasın,bunu en kısa zmnda deniycem bir problem olursa kapını calarım;)
firex hocam sanada teşekkür yontem ve ilgin icin... -
pm filan da atabilirsin bu tip konularda.
-
#define SIZE 10
#include
#include
#include
#include
int main()
{
int a[SIZE];
int toplam=0;
int d1,k1,y1,a1,b,c,d,k,e,f,g,h,i,j,l,m,n,p,r,o,s,t,u,v,w,x,y,z;
int dizi[25] = {b,c,d,e,f,g,h,i,j,l,m,n,o,p,r,s,t,u,v,y,z,x,w};
srand(time(0));
for (k=0; k{
a[k] = rand() %100;
printf("%d", a[k]);
}
for (k = 0; ktoplam += a[k];
printf("\na elemanlari toplami = %d\n", toplam);
scanf("%d",y);
}
örneginbu kodda dizideki harfleri nasıl cıkartıcam programda gosterıcem bir yardımcı olurmusunuz...dizideki değeri yazdırmak sorunum ozellik fprintf de yazdırmak?
-
Toplam Hit: 2157 Toplam Mesaj: 8