Advertisement
Dim_ov

CS387 HW1 Utility

Apr 22nd, 2012
258
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.70 KB | None | 0 0
  1. #include<iostream>
  2. #include<cstring>
  3. using namespace std;
  4.  
  5. void tostring(char* bits, char* str)
  6. {
  7.   for(int i = 0; i < strlen(bits)/7; ++i)
  8.     {
  9.       str[i]=0;
  10.       for(int j=0; j<7;++j)
  11.         {
  12.           str[i] <<= 1;
  13.           str[i] += bits[7*i+j]&1;
  14.         }
  15.     }
  16.   str[strlen(bits)/7] = 0;
  17. }
  18.  
  19. void Xor(const char* op1, const char* op2, char* res, int n)
  20. {
  21.   for(int i = 0; i < n; ++i)
  22.     res[i] = op1[i]^op2[i];
  23.   res[n] = 0;
  24. }
  25.  
  26. bool check(char* s, int n)
  27. {
  28.   for(int i=0;i<0;++i)
  29.     if(s[i]<32 || s[i]>126)return false;
  30.   return true;
  31. }
  32.  
  33. int main(int argc, char** argv)
  34. {
  35.   char c1[] = "1010110010011110011111101110011001101100111010001111011101101011101000110010011000000101001110111010010111100100111101001010000011000001010001001001010000000010101001000011100100010011011011011011010111010011000101010111111110010011010111001001010101110001111101010000001011110100000000010010111001111010110000001101010010110101100010011111111011101101001011111001101111101111000100100001000111101111011011001011110011000100011111100001000101111000011101110101110010010100010111101111110011011011001101110111011101100110010100010001100011001010100110001000111100011011001000010101100001110011000000001110001011101111010100101110101000100100010111011000001111001110000011111111111110010111111000011011001010010011100011100001011001101110110001011101011101111110100001111011011000110001011111111101110110101101101001011110110010111101000111011001111";
  36.   char c2[] = "1011110110100110000001101000010111001000110010000110110001101001111101010000101000110100111010000010011001100100111001101010001001010001000011011001010100001100111011010011111100100101000001001001011001110010010100101011111010001110010010101111110001100010100001110000110001111111001000100001001010100011100100001101010101111000100001111101111110111001000101111111101011001010000100100000001011001001010000101001110101110100001111100001011101100100011000110111110001000100010111110110111010010010011101011111111001011011001010010110100100011001010110110001001000100011011001110111010010010010110100110100000111100001111101111010011000100100110011111011001010101000100000011111010010110111001100011100001111100100110010010001111010111011110110001000111101010110101001110111001110111010011111111010100111000100111001011000111101111101100111011001111";
  37.   char a[700], b[700];
  38.   int res_len = strlen(c1)/7;
  39.   tostring(c1, a), tostring(c2, b);
  40.   char test[400];
  41.   cin.getline(test, 400);
  42.   for(int i=0; i < res_len - int(strlen(test)) + 1; ++i)
  43.   {
  44.     char key[400];
  45.     Xor(a+i, test, key, strlen(test));
  46.     char res[400];
  47.     Xor(b+i, key, res, strlen(test));
  48.     if(check(res, strlen(test)))
  49.       cout<<i<<endl<<res<<endl<<test<<endl<<endl;
  50.   }
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement