Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define SYMBOLS 8
- #define KEYLENGTH 3
- #define MSGLENGTH 4
- int main(void){
- void swap(int*, int*);
- int stream[SYMBOLS];
- int key[KEYLENGTH];
- int message[MSGLENGTH];
- int crypto[MSGLENGTH];
- int finalkey[MSGLENGTH];
- for (int i = 0; i < MSGLENGTH; ++i)
- {
- printf("enter message digit number %d\n", i);
- scanf("%d", &message[i]);
- }
- for(int i = 0; i < SYMBOLS; i++){
- stream[i] = i;
- if(i < KEYLENGTH){
- printf("enter key digit number %d\n", i);
- scanf("%d", &key[i]);
- }
- }
- printf("KEY = ");
- for(int i = 0; i < KEYLENGTH; i++){
- printf("|%d", key[i] );
- }
- printf("\n\n KSA PHASE \n\n");
- int j = 0;
- int index = 0;
- for(int i = 0; i < SYMBOLS; i++){
- printf("\nIterazione %d\n", i);
- printf("j = %d \n", j );
- index = i % KEYLENGTH;
- printf("index = %d \n", index);
- j = (j + stream[i] + key[index]) % SYMBOLS;
- printf("stream[%d] = %d \n", i, index);
- printf("key[index]) = %d \n", key[ i % KEYLENGTH]);
- printf("(j + stream[i] + key[index]) mod %d = %d \n", SYMBOLS, j);
- swap(&stream[i],&stream[j]);
- for(int k = 0 ; k < SYMBOLS ; k++){
- printf("|%d ", stream[k]);
- }
- }
- printf("\n\nFINAL STREAM = ");
- for(int i = 0; i < SYMBOLS; i++){
- printf("|%d ", stream[i]);
- }
- printf("\n\n PRGA PHASE \n\n");
- j= 0;
- int k = 0;
- int h = 0;
- int i = 0;
- for(int i = 0; i < MSGLENGTH; i++){
- finalkey[i] = 0;
- crypto[i] = 0;
- }
- while( h < MSGLENGTH) {
- i = (i + 1) % SYMBOLS;
- printf("i = %d\n", i);
- j = (j + stream[i]) % SYMBOLS;
- printf("j = %d\n", j);
- swap(&stream[i], &stream[j]);
- int k = (stream[i] + stream[j]) % SYMBOLS;
- printf("k = %d\n", k);
- finalkey[h] = stream[k];
- printf("key[%d] = %d\n", k, stream[k]);
- h++;
- }
- printf("\n\n");
- printf("FINAL KEY = ");
- for(i = 0; i < MSGLENGTH; i++){
- printf("|%d", finalkey[i]);
- }
- printf("\n\n ENCRYPTION PHASE \n\n");
- for(i = 0; i < MSGLENGTH; i++){
- crypto[i] = message[i] ^ finalkey[i];
- printf("%d = %d xor %d\n", crypto[i], message[i], finalkey[i]);
- }
- printf("\nFINAL MESSAGE = ");
- for(i = 0; i < MSGLENGTH; i++){
- printf("|%d", crypto[i]);
- }
- }
- void swap(int* a, int* b){
- int temp;
- temp = *a;
- *a = *b;
- *b = temp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement