Advertisement
Guest User

Untitled

a guest
Apr 29th, 2015
259
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.39 KB | None | 0 0
  1. static bool VerifyBetResult(string serverSeed, int clientSeed, int betNumber,
  2.                             long betResult, string serverSeedHash = null)
  3. {
  4.     Func<string, byte[]> strtobytes = s => Enumerable
  5.         .Range(0, s.Length / 2)
  6.         .Select(x => byte.Parse(s.Substring(x * 2, 2), NumberStyles.HexNumber))
  7.         .ToArray();
  8.     byte[] server = strtobytes(serverSeed);
  9.     byte[] client = BitConverter.GetBytes(clientSeed).Reverse().ToArray();
  10.     byte[] num = BitConverter.GetBytes(betNumber).Reverse().ToArray();
  11.     byte[] serverhash = serverSeedHash == null ? null : strtobytes(serverSeedHash);
  12.     byte[] data = server.Concat(client).Concat(num).ToArray();
  13.     using (SHA512 sha512 = new SHA512Managed())
  14.     {
  15.         if (serverhash != null)
  16.             using (SHA256 sha256 = new SHA256Managed())
  17.                 if (!sha256.ComputeHash(server).SequenceEqual(serverhash))
  18.                     throw new Exception("Server seed hash does not match server seed");
  19.         byte[] hash = sha512.ComputeHash(sha512.ComputeHash(data));
  20.         while (true)
  21.         {
  22.             for (int x = 0; x <= 61; x += 3)
  23.             {
  24.                 long result = (hash[x] << 16) | (hash[x + 1] << 8) | hash[x + 2];
  25.                 if (result < 16000000)
  26.                     return result % 1000000 == betResult;
  27.             }
  28.             hash = sha512.ComputeHash(hash);
  29.         }
  30.     }
  31. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement