Cromon

Main.cpp

Oct 24th, 2012
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.15 KB | None | 0 0
  1. void encodeVignère_Legacy(char* input, const char* key) {
  2.     uint32 lenInput = strlen(input);
  3.     uint32 lenKey = strlen(key);
  4.  
  5.     for(uint32 i = 0; i < max(lenInput, lenKey); ++i) {
  6.         if(i < lenInput)
  7.         {
  8.             char value = input[i];
  9.             if(!((value >= 'A' && value <= 'Z') || (value >= 'a' && value <= 'z')))
  10.                 throw std::exception("Invalid input provided!");
  11.         }
  12.         if(i < lenKey)
  13.         {
  14.             char value = key[i];
  15.             if(!((value >= 'A' && value <= 'Z') || (value >= 'a' && value <= 'z')))
  16.                 throw std::exception("Invalid key provided!");
  17.         }
  18.     }
  19.  
  20.     for(uint32 i = 0, keyIndex = 0; i < lenInput; ++i, ++keyIndex) {
  21.         char& ref = input[i];
  22.         const char& keyChar = key[keyIndex % lenKey];
  23.         uint32 keyOffset = 0;
  24.  
  25.         if(keyChar >= 'A' && keyChar <= 'Z')
  26.             keyOffset = (uint32)(keyChar - 'A');
  27.         else
  28.             keyOffset = (uint32)(keyChar - 'z');
  29.  
  30.         bool isUpperCase = (ref >= 'A' && ref <= 'Z');
  31.         char minChar = isUpperCase ? 'A' : 'a';
  32.  
  33.         uint32 newKey = (uint32)ref + keyOffset;
  34.         newKey -= minChar;
  35.         newKey %= 26;
  36.         newKey += minChar;
  37.  
  38.         ref = (char)newKey;
  39.     }
  40. }
  41.  
  42. void decodeVignère_Legacy(char* input, const char* key) {
  43.     uint32 lenInput = strlen(input);
  44.     uint32 lenKey = strlen(key);
  45.  
  46.     for(uint32 i = 0; i < max(lenInput, lenKey); ++i) {
  47.         if(i < lenInput)
  48.         {
  49.             char value = input[i];
  50.             if(!((value >= 'A' && value <= 'Z') || (value >= 'a' && value <= 'z')))
  51.                 throw std::exception("Invalid input provided!");
  52.         }
  53.         if(i < lenKey)
  54.         {
  55.             char value = key[i];
  56.             if(!((value >= 'A' && value <= 'Z') || (value >= 'a' && value <= 'z')))
  57.                 throw std::exception("Invalid key provided!");
  58.         }
  59.     }
  60.  
  61.     for(uint32 i = 0, keyIndex = 0; i < lenInput; ++i, ++keyIndex) {
  62.         char& ref = input[i];
  63.         const char& keyChar = key[keyIndex % lenKey];
  64.         uint32 keyOffset = 0;
  65.  
  66.         if(keyChar >= 'A' && keyChar <= 'Z')
  67.             keyOffset = (uint32)(keyChar - 'A');
  68.         else
  69.             keyOffset = (uint32)(keyChar - 'z');
  70.  
  71.         bool isUpperCase = (ref >= 'A' && ref <= 'Z');
  72.         char minChar = isUpperCase ? 'A' : 'a';
  73.  
  74.         int32 newKey = (int32)ref - keyOffset;
  75.         newKey -= minChar;
  76.         if(newKey < 0)
  77.             newKey = 26 + newKey;
  78.  
  79.         newKey += minChar;
  80.  
  81.         ref = (char)newKey;
  82.     }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment