Advertisement
Guest User

Untitled

a guest
Apr 21st, 2015
187
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. #include <stdio.h>
  2. #define SYMBOLS 8
  3. #define KEYLENGTH 3
  4. #define MSGLENGTH 4
  5.  
  6. int main(void){
  7.  
  8. void swap(int*, int*);
  9. int stream[SYMBOLS];
  10. int key[KEYLENGTH];
  11. int message[MSGLENGTH];
  12. int crypto[MSGLENGTH];
  13.  
  14. int finalkey[MSGLENGTH];
  15. for (int i = 0; i < MSGLENGTH; ++i)
  16. {
  17. printf("enter message digit number %d\n", i);
  18. scanf("%d", &message[i]);
  19. }
  20. for(int i = 0; i < SYMBOLS; i++){
  21. stream[i] = i;
  22. if(i < KEYLENGTH){
  23. printf("enter key digit number %d\n", i);
  24. scanf("%d", &key[i]);
  25. }
  26. }
  27.  
  28. printf("KEY = ");
  29. for(int i = 0; i < KEYLENGTH; i++){
  30. printf("|%d", key[i] );
  31. }
  32.  
  33.  
  34. printf("\n\n KSA PHASE \n\n");
  35.  
  36. int j = 0;
  37. int index = 0;
  38. for(int i = 0; i < SYMBOLS; i++){
  39. printf("\nIterazione %d\n", i);
  40. printf("j = %d \n", j );
  41. index = i % KEYLENGTH;
  42. printf("index = %d \n", index);
  43. j = (j + stream[i] + key[index]) % SYMBOLS;
  44. printf("stream[%d] = %d \n", i, index);
  45. printf("key[index]) = %d \n", key[ i % KEYLENGTH]);
  46. printf("(j + stream[i] + key[index]) mod %d = %d \n", SYMBOLS, j);
  47. swap(&stream[i],&stream[j]);
  48. for(int k = 0 ; k < SYMBOLS ; k++){
  49. printf("|%d ", stream[k]);
  50. }
  51. }
  52.  
  53. printf("\n\nFINAL STREAM = ");
  54. for(int i = 0; i < SYMBOLS; i++){
  55. printf("|%d ", stream[i]);
  56. }
  57.  
  58. printf("\n\n PRGA PHASE \n\n");
  59. j= 0;
  60. int k = 0;
  61. int h = 0;
  62. int i = 0;
  63. for(int i = 0; i < MSGLENGTH; i++){
  64. finalkey[i] = 0;
  65. crypto[i] = 0;
  66. }
  67. while( h < MSGLENGTH) {
  68. i = (i + 1) % SYMBOLS;
  69. printf("i = %d\n", i);
  70. j = (j + stream[i]) % SYMBOLS;
  71. printf("j = %d\n", j);
  72.  
  73. swap(&stream[i], &stream[j]);
  74. int k = (stream[i] + stream[j]) % SYMBOLS;
  75.  
  76. printf("k = %d\n", k);
  77. finalkey[h] = stream[k];
  78. printf("key[%d] = %d\n", k, stream[k]);
  79. h++;
  80. }
  81.  
  82. printf("\n\n");
  83.  
  84. printf("FINAL KEY = ");
  85.  
  86. for(i = 0; i < MSGLENGTH; i++){
  87. printf("|%d", finalkey[i]);
  88. }
  89.  
  90. printf("\n\n ENCRYPTION PHASE \n\n");
  91. for(i = 0; i < MSGLENGTH; i++){
  92. crypto[i] = message[i] ^ finalkey[i];
  93. printf("%d = %d xor %d\n", crypto[i], message[i], finalkey[i]);
  94. }
  95.  
  96. printf("\nFINAL MESSAGE = ");
  97.  
  98. for(i = 0; i < MSGLENGTH; i++){
  99. printf("|%d", crypto[i]);
  100. }
  101.  
  102. }
  103.  
  104.  
  105. void swap(int* a, int* b){
  106. int temp;
  107. temp = *a;
  108. *a = *b;
  109. *b = temp;
  110.  
  111. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement