Algoritmo RC4

di il
2 risposte

Algoritmo RC4

Implementazione dell'algoritmo RC4
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void gestione(unsigned char *s,char *k,int l){
	int i=0,j=0,t=0;
	for(i=0;i<256;i++){
		s[i]=i;
	}
	for(i=0;i<256;i++){
		j=(j+s[i]+k[i%l])%256;
		t=s[i];
		s[i]=s[j];
		s[j]=t;
	}
}
void cifra(unsigned char *s,unsigned char *output,int l,char *input){
	int i=0,j=0,k=0,t=0;
	for(k=0;k<l;k++){
		i=(i+1)%256;
		j=(j+s[i])%256;
		t=s[i];
		s[i]=s[j];
		s[j]=t;
		output[k]=s[(s[i]+s[j])%256]^input[l];
	}
}
main()
{
	char stringa[50],chiave[20];
	unsigned char risultato[50],s_box[256];
	int i=0;
	printf("Input:");
	gets(stringa);
	printf("Chiave:");
	gets(chiave);
	gestione(s_box,chiave,strlen(chiave));
	cifra(s_box,risultato,strlen(stringa),stringa);
	printf("\nOutput:");
	for(i=0;i<strlen(stringa);i++){
		printf("%X ",risultato[i]^stringa[i]);
	}
    printf ("\n\n");
}

gestione() ---> Inizializza l'S-box
cifra() ---> Usato per cifrare e decifrare
Risultato in esadecimale

2 Risposte

Devi accedere o registrarti per scrivere nel forum
2 risposte