11 Şubat 2010 Perşembe

substitution cipher

#include<stdio.h>
#include <string.h>

#define SIZE 10

int main(){

int uzunluk,i,j;
char ptext[SIZE];
char ktext[26];
char ctext[SIZE];

printf("Sifrenelenecek metni giriniz:");//ptext i al,eleman sayısını bul
gets(ptext);//diziyi alıyoruz
uzunluk=strlen(ptext);

printf("\nSirayla\n a b c d e f g h i j k l m n o p q r s t u v w x y z \nicin anahtar giriniz:");
gets(ktext);

//texti ara ,a varsa ilk ile değiştir
for(i=0;i<26;i++)
for(j=0;j<uzunluk;j++)
if(ptext[j]==('a'+i))
ctext[j]=ktext[i];

for(i=0;i<26;i++)
printf("%c",ktext[i]);
printf("\n");

printf("\nsubstitution cipher\n");

for(i=0;i<uzunluk;i++)
printf("%c",ctext[i]);
printf("\n");

return 0;
}

affine cipher

#include<stdio.h>
#include <string.h>

#define SIZE 10

int main(){

int uzunluk,i,a,b;
char ptext[SIZE];
char ctext[SIZE];
int intext[SIZE];

printf("Sifrenelenecek metni giriniz:");//ptext i al,eleman sayısını bul
gets(ptext);//diziyi alıyoruz
uzunluk=strlen(ptext);

//a ve b key değerlerini al
printf("\na degerini giriniz:");
scanf("%d",&a);
printf("\nb degerini giriniz:");
scanf("%d",&b);

int sayac=0,ks;//aralarında asla ise kontrol
if(a<26)
ks=a;
if(26<a) //küçük sayiyi bulduralım ki döngü daha az çalışsın.
ks=26;

for(i=2;i<=ks;++i)
if(a%i==0 && 26%i==0) //aralarında asal mı??
sayac=1;

if (sayac==0) {

for(i=0;i<uzunluk;i++){
intext[i]=ptext[i]-'a';
ctext[i]=((a*intext[i]+b)%26)+'a';}


printf("\naffine cipher\n");

for(i=0;i<uzunluk;i++)
printf("%c",ctext[i]);
printf("\n");

}
else
printf("\ngirdiginiz a ve 26 degeri aralarinda asal olmadigi icin bu yontemi kullanamazsiniz!!!!\n");

return 0;
}

vigenere cipher

#include<stdio.h>
#include <string.h>

#define SIZE 100

int main(){

int m,n,i,j;
char ptext[SIZE];
char ktext[SIZE];
char ctext[SIZE];
int intext[SIZE];
int intext1[SIZE];

printf("Sifrenelenecek metni giriniz:");//ptext i al,eleman sayısını bul
gets(ptext);//diziyi alıyoruz
n=strlen(ptext);

printf("Anahtari giriniz:");
gets(ktext);
m=strlen(ktext);

for(i=0;i<n;i++)
intext[i]=ptext[i]-'a';

for(i=0;i<m;i++)
intext1[i]=ktext[i]-'a';

if(m>=n)
for(i=0;i<n;i++)
ctext[i]=(intext[i]+intext1[i])%26+'a';

else if(m<n){
for(i=0;i<n;)
for(j=0;j<m;j++,i++)
ctext[i]=(intext[i]+intext1[j])%26+'a';
}

printf("\nvigenere cipher\n");

for(i=0;i<n;i++)
printf("%c",ctext[i]);
printf("\n");

return 0;
}

permutation cipher

#include<stdio.h>
#include <string.h>

#define SIZE 100

int main(){

int n,i,m,k,j;
char ptext[SIZE];
int ktext[SIZE];
char ctext[SIZE];

printf("Sifrenelenecek metni giriniz:");//ptext i al,eleman sayısını bul
gets(ptext);//diziyi alıyoruz
n=strlen(ptext);

printf("\nparca uzunlugunu giriniz:");
scanf("%d",&m);
printf("\npermutasyonu giriniz:");
for(i=0;i<m;i++){
printf("\n%d icin giriniz:",i+1);
scanf("%d",&ktext[i]);
}

k=0;
for(j=0;j<n/m;j++){
for(i=0;i<m;i++){
ctext[i+k]=ptext[ktext[i]+k-1];}
k=k+m;
}

printf("\npermutation cipher\n");

for(i=0;i<n;i++)
printf("%c",ctext[i]);
printf("\n");

return 0;
}

hill cipher

#include<stdio.h>
#include <string.h>

#define SIZE 100

int main(){

int n,i,j,boyut,k;
char ptext[SIZE];
int ktext[SIZE][SIZE];
char ctext[SIZE];
int intext[SIZE];
int x[100][100];
int son[100][100];

printf("Sifrenelenecek metni giriniz:");//ptext i al,eleman sayısını bul
gets(ptext);//diziyi alıyoruz
n=strlen(ptext);

printf("\nAnahtar kare matrisin boyutunu giriniz:");
scanf("%d",&boyut);
printf("\nAnahtar kare matrisini giriniz:\n");
for(i=0;i<boyut;i++)
for(j=0;j<boyut;j++){
printf("\n%d.satir %d. sutunu giriniz:",i,j);
scanf("%d",&ktext[i][j]);}

for(j=0;j<boyut;j++)
for(i=0;i<boyut;i++)
son[j][i]=0;

for(i=0;i<n;i++)
intext[i]=ptext[i]-'a';


k=0;
for(i=0;i<(n/boyut);i++){
for(j=0;j<boyut;j++){
x[i][j]=intext[j+k];}
k=k+boyut;
}

for(i=0;i<boyut;i++)
for(j=0;j<boyut;j++)
for(k=0;k<boyut;k++)
son[i][j] = son[i][j] + x[i][k]*ktext[k][j];

/*for(i=0;i<boyut;i++)
for(j=0;j<boyut;j++)
printf("\n%d",son[i][j]);*/

k=0;
for(i=0;i<boyut;i++)
for(j=0;j<boyut;j++,k++)
ctext[k]=(son[i][j])%26+'a';

printf("\nhill cipher\n");

for(i=0;i<n;i++)
printf("%c",ctext[i]);
printf("\n");

return 0;
}