I have just read mental poker, described in this fascinating paper(PDF) by cryptographic greats Adi Shamir, Ron Rivest, and Leonard Adleman.

Assuming I have a website, (TTP) how can I prove to the player that the hand dealt to him is fair? Most importantly how can I prove that I didn't bruteforce until an unfair hand is dealt to him to gain house edge, are there any C# implentations of such code?

  • $\begingroup$ You can't prove that you didn't bruteforce, maybe you did but were extremely lucky. Computational hardness is an assumption we have to take on faith. $\endgroup$ Dec 8, 2012 at 23:49
  • $\begingroup$ For future reference - you might get better answers to this kind of question on Cryptography.SE. $\endgroup$
    – D.W.
    Jan 18, 2013 at 3:51

1 Answer 1


I found out you can prove a hand is fair with the following method:

Every user has a randomly generated "secret" in an input field he can personally edit, before each card is picked all the secrets are sent to the server and hashed seperately, then all the secrets are hashed into a single hash which is used as a seed for the random functions.

Then all the players hashes are sent to every player and being displayed on that players screen, when it is safe, every player is also shown all the other players secret phrases this way: A) Every player knows that the secrets weren't changed after the game since they have the hashes B) It is impossible for them to find the secrets and get an unfair advantage before it is safe to reveal the secrets C) They can now know that every card is dealt fairly


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.