Advertisement
Guest User

exor.cu

a guest
Oct 4th, 2012
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.84 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <unistd.h>
  3.  
  4. #define MAX_TITKOS 10000
  5. #define OLVASAS_BUFFER 256
  6. #define KULCS_MERET 3
  7.  
  8. __global__
  9. void exor(int meret, char *temp)
  10. {
  11.     char *titkos, kulcs[KULCS_MERET];
  12.     titkos = (char *) malloc(meret);
  13.        
  14.     kulcs[0] = (char) (blockIdx.x + 48);
  15.     kulcs[1] = (char) (threadIdx.x + 48);
  16.     kulcs[2] = (char) (threadIdx.y + 48);
  17.    
  18.     for(int i = 0; i < meret; i++)
  19.         titkos[i] = temp[i];
  20.    
  21.     int kulcs_index = 0;
  22.     for (int i = 0; i < meret; i++)
  23.     {
  24.         titkos[i] = titkos[i] ^ kulcs[kulcs_index];
  25.         kulcs_index = (kulcs_index + 1) % KULCS_MERET;
  26.     }
  27.  
  28.     int sz = 0;
  29.     for (int i = 0; i < meret; i++)
  30.         if (titkos[i] == ' ')
  31.             sz++;
  32.  
  33.     double szohossz = (double) (meret/sz);
  34.  
  35.     if (szohossz >= 6.0 && szohossz <= 9.0)
  36.     {
  37.         printf("Kulcs: [%c%c%c]\n", kulcs[0], kulcs[1], kulcs[2]);
  38.         printf("Tiszta szoveg:\n------------------------\n");
  39.         for(int i = 0; i < meret; i++)
  40.             printf("%c", titkos[i]);
  41.         printf("------------------------\n");
  42.     }
  43.  
  44.     free(titkos);
  45. }
  46.  
  47. int main()
  48. {
  49.     int olvasott_bajtok;
  50.     char *titkos = new char[MAX_TITKOS];
  51.     char *p = titkos;
  52.  
  53.     while ((olvasott_bajtok =
  54.                 read (0, (void *) p,
  55.                       (p - titkos + OLVASAS_BUFFER <
  56.                        MAX_TITKOS) ? OLVASAS_BUFFER : titkos + MAX_TITKOS - p)))
  57.         p += olvasott_bajtok;
  58.  
  59.     int meret = p - titkos;
  60.  
  61.     for (int i = 0; i < MAX_TITKOS - meret; i++)
  62.         titkos[meret + i] = '\0';
  63.    
  64.     char *temp;
  65.  
  66.     cudaMalloc((void**) &temp, meret);
  67.     cudaMemcpy(temp, titkos, meret, cudaMemcpyHostToDevice );
  68.    
  69.     dim3 dimBlock(10, 10);
  70.    
  71.     exor<<<10, dimBlock>>>(meret, temp);
  72.    
  73.     cudaFree(temp);
  74.     delete[] titkos;
  75.  
  76.     return 0;
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement