Olá! Me ajudem por favor, estou fazendo o programa, ele roda, mas não esta fazendo a criptografia corretamente! Já fiz várias modificações e nada! Ai esta o programa para análise!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
//Variáveis
unsigned char S[256];
char K[256];
char mensagem[256];
char *resultfinal;
unsigned char temp;
int i,j, tamentrada,L;
//Key-Scheduling Algorithm KSA
void algksa(){
//Array unidimensional S de tamanho 256
for(i=0; i<256;i++){
S[i]=i;
}
//Array com a chave
j=0;
for(i=0;i<256;i++){
j=(j+S[i]+K[i%L])%256;
//Troca
temp=S[i];
S[i]=S[j];
S[j]=temp;
}
i=0;
j=0;
}
//Psuedo-Random generation algorithm PRGA
void algprga(){
int t,output;
char result[tamentrada-1];
//Loop de cifragem da mensagem
for(t=0;t<tamentrada;t++){
i=(i+1)%256;
j=(j+S[i])%256;
//Troca
temp=S[i];
S[i]=S[j];
S[j]=temp;
//XOR
result[t]=(S[(S[i]+S[j])%256])^mensagem[t];
}
resultfinal=(char*)malloc((tamentrada-1)*(sizeof(char)));
strcpy(resultfinal, result);
}
//Menu Principal
int main(){
//setlocale(LC_ALL, "Portuguese");
printf("Escreva a frase para Criptografar:");
scanf ("%[^\n]s", mensagem);
tamentrada=strlen(mensagem);
fflush(stdin);
printf ("\nDigite a Chave:");
scanf ("%[^\n]s", K);
//Tamanho da Chave
L=strlen(K);
fflush(stdin);
algksa();
algprga();
//Mostrar resultado
printf ("\nMensagem Cifrada: %s\n", resultfinal);
fflush(stdin);
system("pause");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <locale.h>
//Variáveis
unsigned char S[256];
char K[256];
char mensagem[256];
char *resultfinal;
unsigned char temp;
int i,j, tamentrada,L;
//Key-Scheduling Algorithm KSA
void algksa(){
//Array unidimensional S de tamanho 256
for(i=0; i<256;i++){
S[i]=i;
}
//Array com a chave
j=0;
for(i=0;i<256;i++){
j=(j+S[i]+K[i%L])%256;
//Troca
temp=S[i];
S[i]=S[j];
S[j]=temp;
}
i=0;
j=0;
}
//Psuedo-Random generation algorithm PRGA
void algprga(){
int t,output;
char result[tamentrada-1];
//Loop de cifragem da mensagem
for(t=0;t<tamentrada;t++){
i=(i+1)%256;
j=(j+S[i])%256;
//Troca
temp=S[i];
S[i]=S[j];
S[j]=temp;
//XOR
result[t]=(S[(S[i]+S[j])%256])^mensagem[t];
}
resultfinal=(char*)malloc((tamentrada-1)*(sizeof(char)));
strcpy(resultfinal, result);
}
//Menu Principal
int main(){
//setlocale(LC_ALL, "Portuguese");
printf("Escreva a frase para Criptografar:");
scanf ("%[^\n]s", mensagem);
tamentrada=strlen(mensagem);
fflush(stdin);
printf ("\nDigite a Chave:");
scanf ("%[^\n]s", K);
//Tamanho da Chave
L=strlen(K);
fflush(stdin);
algksa();
algprga();
//Mostrar resultado
printf ("\nMensagem Cifrada: %s\n", resultfinal);
fflush(stdin);
system("pause");
return 0;
}