meiji488

Untitled

Jul 8th, 2018
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 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. }
Add Comment
Please, Sign In to add comment