Kodi PHP:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <ctype.h>
int konvertoNeKarakter(char *, int);
int decimal(char);
main(){
FILE *input, *output;
int i=0, j=0, k=-1, flag=0;
char nextChar; /* marr karakterin e radhes nga file-i dhe cdo */
char hexa[6] = {'\0'}, dekriptuar[1000]={'\0'}; /* 6-she karakteresh e fus ne vektorin hexa, e cila do te konvertohet ne nje karakter */
char inputKriptuar[20]={'\0'};
char outputOrigjinal[20]={'\0'};
/* marr emrin e file-it ku ndodhet teksti i kriptuar */
printf("Fut emrin e file-it me tekstin e kriptuar: ");
scanf("%s", &inputKriptuar);
/* marr e mrin e file-it ku do te shkruhet teksti origjinal */
printf("\n\nFut emrin e file-it ku do te shkruhet teksti origjinal: ");
scanf("%s", &outputOrigjinal);
if((input = fopen(inputKriptuar, "r")) == NULL){
printf("Gabim ne hapjen e File-it\n");
exit(1);
}
else{
while(!feof(input)){
fscanf(input, "%c", &nextChar);
if(isalnum(nextChar)){
k++; /* memorizon indeksin qe ka karakteri ne tekst */
flag=1; /* ky flag me duhet per te menjanuar hapesirat qe mund te kete midis 2 Nr hexadecimal */
} /* vetem nqs flag==1 therras funksionin per dekriptim */
i=0;
while(!feof(input) && isalnum(nextChar)){ /* memorizoj ne vektorin hexa[] numrin hexadecimal te radhes */
hexa[i++]=nextChar;
fscanf(input, "%c", &nextChar);
}
if(flag==1){
dekriptuar[j++] = (char)konvertoNeKarakter(hexa, k); /* funksioni qe ben dekriptimin */
flag=0; /* ky kthen int, prandaj bej kastin ne char */
}
}
if((output = fopen(outputOrigjinal, "w")) == NULL){
printf("File-i output nuk egziston ose nuk mund te hapet!\n");
exit(1);
}
else{
fprintf(output, "%s\n", dekriptuar);
fclose(input);
}
}
printf("%s\n", dekriptuar);
system("PAUSE");
return(0);
}
/* funksioni qe ben dekriptimin, domethene numrin hexadecimal e kthen ne decimal, e pjeston me */
/* 2^k (k=indeksi i karakterit ne tekst) dhe keshtu perftohet kodi ascii ne decimal i karakterit */
int konvertoNeKarakter(char hexa[],int k){
int i=0, dec=0;
for(i=0; i<6; i++)
dec += (decimal(hexa[i]))*pow(16, 5-i);
return dec/pow(2, k);
}
/* funksioni qe ben konvertimin e nje numri hexadecimal ne decimal */
int decimal(char hexaChar){
int i;
char hexaNum[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
for(i=0; i<16; i++)
if(hexaChar == hexaNum[i])
return i;
}
Pjesa për shifrim/kriptim
Kodi PHP:
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <math.h>
int indice=0;
/* vektor qe me duhet per te konvertuar nje numer decimal ne hexadecimal */
char hexa[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
void kripto(char *, char *);
void hexadecimal(int , char *);
main(){
FILE *input, *output;
char nextChar; /* ketu memorizoj karakterin e radhes qe lexoj ne File */
int i=0;
char kriptuar[1000]={'\0'}, origjinali[1000]={'\0'}; /* vektoret qe do mbajne tekstin e kriptuar dhe origjinalin */
char inputOrigjinal[20]={'\0'}; /* emri i File-it ku ndodhet teksti origjinal */
char outputKriptuar[20]={'\0'}; /* emri i File-it ku do te shkruhet teksti i kriptuar */
/* marr emrin e file-it ku ndodhet teksti origjinal */
printf("\nFut emrin e File-it me tekstin origjinal: ");
scanf("%s", &inputOrigjinal);
/* marr emrin e file-it ku do te shkruhet teksti i kriptuar */
printf("\n\n\Fut emrin e File-it ku do te shkruhet teksti i kriptuar: ");
scanf("%s", &outputKriptuar);
if((input = fopen(inputOrigjinal, "r")) == NULL){
printf("Gabim ne hapjen e File-it input\n");
exit(1);
}
else{
while(!feof(input)) /* Derisa te mbaroj file-i lexoj te gjitha karakteret */
fscanf(input, "%c", &origjinali[i++]);
fclose(input);
printf("\n%s\n\n", origjinali);
kripto(origjinali, kriptuar); /* Funksioni qe ben kriptimin dhe tekstin e kriptuar e memorizon ne vektorin kriptuar[] */
if((output = fopen(outputKriptuar, "w"))==NULL){
printf("File-i output nuk egziston ose nuk mund te hapet\n");
exit(1);
}
else{
fprintf(output, "%s\n", kriptuar); /* shkruaj ne File tekstin e kriptuar */
fclose(output);
}
}
system("PAUSE");
return 0;
}
/* Funksioni qe ben kriptimin */
void kripto(char origjinali[], char kriptuar[]){
int i=0, temp;
for(i=0; origjinali[i]!='\0'; i++){ /* per cdo karakter ne teksstin origjinal */
temp = pow(2, i); /* marr kodin ascii ne baze 10, e shumezoj */
hexadecimal(((int)origjinali[i]) * temp, kriptuar); /* me 2^i, i=indeksi i karakterit ne vektorin e tekstit origjinal */
} /* rezultatin e kthej ne hexadecimal me 6 shifra */
printf("\n%s\n", kriptuar);
return;
}
/* funksioni qe ben konvertimin e nje numri decimal ne numer hexadecimal */
void hexadecimal(int decimal, char kriptuar []){
int i=5;
int temp;
while(i>=0){
temp = pow(16, i);
kriptuar[indice++]=hexa[decimal/temp];
decimal = decimal - (decimal/temp)*temp;
i--;
}
kriptuar[indice++]=' ';
return;
}
Krijoni Kontakt