MostafaLotfy1999

PasswordCryptography 5017

Sep 8th, 2020
1,554
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.IO;
  3. using System.Text;
  4.  
  5. namespace Conquer_Online_Server.Network.Cryptography
  6. {
  7.     public class PasswordCryptography
  8.     {
  9.         static UInt32 LeftRotate(UInt32 var, UInt32 offset)
  10.         {
  11.             UInt32 tmp1, tmp2;
  12.             offset &= 0x1f;
  13.             tmp1 = var >> (int)(32 - offset);
  14.             tmp2 = var << (int)offset;
  15.             tmp2 |= tmp1;
  16.             return tmp2;
  17.         }
  18.         static UInt32 RightRotate(UInt32 var, UInt32 offset)
  19.         {
  20.             UInt32 tmp1, tmp2;
  21.             offset &= 0x1f;
  22.             tmp1 = var << (int)(32 - offset);
  23.             tmp2 = var >> (int)offset;
  24.             tmp2 |= tmp1;
  25.             return tmp2;
  26.         }
  27.  
  28.         static uint[] key = new uint[] {
  29.                 0xEBE854BC, 0xB04998F7, 0xFFFAA88C,
  30.                 0x96E854BB, 0xA9915556, 0x48E44110,
  31.                 0x9F32308F, 0x27F41D3E, 0xCF4F3523,
  32.                 0xEAC3C6B4, 0xE9EA5E03, 0xE5974BBA,
  33.                 0x334D7692, 0x2C6BCF2E, 0xDC53B74,  
  34.                 0x995C92A6, 0x7E4F6D77, 0x1EB2B79F,
  35.                 0x1D348D89, 0xED641354, 0x15E04A9D,
  36.                 0x488DA159, 0x647817D3, 0x8CA0BC20,
  37.                 0x9264F7FE, 0x91E78C6C, 0x5C9A07FB,
  38.                 0xABD4DCCE, 0x6416F98D, 0x6642AB5B
  39.         };
  40.         public static string EncryptPassword(string password)
  41.         {
  42.             UInt32 tmp1, tmp2, tmp3, tmp4, A, B, chiperOffset, chiperContent;
  43.  
  44.             byte[] plain = new byte[16];
  45.             Encoding.ASCII.GetBytes(password, 0, password.Length, plain, 0);
  46.  
  47.             MemoryStream mStream = new MemoryStream(plain);
  48.             BinaryReader bReader = new BinaryReader(mStream);
  49.             UInt32[] pSeeds = new UInt32[4];
  50.             for (int i = 0; i < 4; i++) pSeeds[i] = bReader.ReadUInt32();
  51.             bReader.Close();
  52.  
  53.             chiperOffset = 7;
  54.  
  55.             byte[] encrypted = new byte[plain.Length];
  56.             MemoryStream eStream = new MemoryStream(encrypted);
  57.             BinaryWriter bWriter = new BinaryWriter(eStream);
  58.            
  59.             for (int j = 0; j < 2; j++)
  60.             {
  61.                 tmp1 = tmp2 = tmp3 = tmp4 = 0;
  62.                 tmp1 = key[5];
  63.                 tmp2 = pSeeds[j * 2];
  64.                 tmp3 = key[4];
  65.                 tmp4 = pSeeds[j * 2 + 1];
  66.  
  67.                 tmp2 += tmp3;
  68.                 tmp1 += tmp4;
  69.  
  70.                 A = B = 0;
  71.  
  72.                 for (int i = 0; i < 12; i++)
  73.                 {
  74.                     chiperContent = 0;
  75.                     A = LeftRotate(tmp1 ^ tmp2, tmp1);
  76.                     chiperContent = key[chiperOffset + i * 2 - 1];
  77.                     tmp2 = A + chiperContent;
  78.  
  79.                     B = LeftRotate(tmp1 ^ tmp2, tmp2);
  80.                     chiperContent = key[chiperOffset + i * 2];
  81.                     tmp1 = B + chiperContent;
  82.                 }
  83.  
  84.                 bWriter.Write(tmp2);
  85.                 bWriter.Write(tmp1);
  86.             }
  87.             bWriter.Close();
  88.  
  89.             return ASCIIEncoding.ASCII.GetString(encrypted);
  90.  
  91.         }
  92.     }
  93. }
  94.  
RAW Paste Data