Guest User

xor.inc // by namespace

a guest
Jun 2nd, 2012
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pawn 1.88 KB | None | 0 0
  1. /*
  2. *                   XOR
  3. *               __________________________________________________
  4. *
  5. *                   Copyright © 2012 by namespace
  6. *               __________________________________________________
  7. *
  8. *                   21:01 | GMT + 1
  9. *                   02.06.2012 | SATURDAY
  10. *               __________________________________________________
  11. *
  12. *                   Credits:
  13. *                       ._  namespace
  14. */
  15.  
  16. #if defined XOR
  17.     #endinput
  18. #endif
  19.  
  20. #define XOR
  21.  
  22. #define MAX_CRYPT_STRING            256
  23.  
  24. stock EncryptByXOR(source[], dest[], lenDest, key = -1)
  25. {
  26.     new temp[MAX_CRYPT_STRING], keySet;
  27.    
  28.     if (key == -1)
  29.     {
  30.         keySet = false;
  31.         key = random(256);
  32.     }
  33.     else
  34.     {
  35.         keySet = true;
  36.     }
  37.    
  38.     for (new i = 0; i < strlen(source); i++)
  39.     {      
  40.         format(temp, lenDest, "%s%s", temp, source[i] ^ key);
  41.     }
  42.    
  43.     if (!keySet) format(temp, lenDest, "%s:%d", temp, key);
  44.    
  45.     format(dest, lenDest, "%s", temp);
  46. }
  47.  
  48. stock DecryptByXOR(source[], dest[], lenDest, key = -1)
  49. {
  50.     new temp[MAX_CRYPT_STRING], tempSource[MAX_CRYPT_STRING], realEncrypted[MAX_CRYPT_STRING], localKey;
  51.    
  52.     format(tempSource, sizeof(tempSource), "%s", source);
  53.    
  54.     if (key == -1)
  55.     {
  56.         new encryptedTemp[MAX_CRYPT_STRING];
  57.         new keyTemp[MAX_CRYPT_STRING];
  58.         new delimPos = strfind(tempSource, ":");
  59.        
  60.         format(encryptedTemp, sizeof(encryptedTemp), "%s", tempSource);
  61.         format(keyTemp, sizeof(keyTemp), "%s", tempSource);
  62.        
  63.         strdel(encryptedTemp, delimPos, sizeof(keyTemp));
  64.         strdel(keyTemp, 0, delimPos + 1);
  65.        
  66.         format(realEncrypted, sizeof(realEncrypted), "%s", encryptedTemp);
  67.         localKey = strval(keyTemp);
  68.     }
  69.     else
  70.     {
  71.         format(realEncrypted, sizeof(realEncrypted), "%s", tempSource);
  72.         localKey = key;
  73.     }
  74.  
  75.     for (new i = 0; i < strlen(realEncrypted); i++)
  76.     {
  77.         format(temp, lenDest, "%s%s", temp, realEncrypted[i] ^ localKey);
  78.     }
  79.    
  80.     format(dest, lenDest, "%s", temp);
  81. }
Advertisement
Add Comment
Please, Sign In to add comment