1. Some cards are known to everyone watching. Just reveal it and it's associated hash.
2. Some cards are known only to the player. Just reveal it to that particular player.
3. The rest are still in the deck. Everyone sees the hash of the cards in the deck without seeing the face of the cards. It's as if each card is individually and uniquely marked at the back. But no one knows
4. The player can prove to himself he got the cards he was supposed to get.
5. The other players have no clue except that the first player did get some cards, but they don't know which ones.
6. It's possible the other players will never be able to tell what those cards are.
Without reading the rest of the literature already available on the subject, I independently came up with something that does the first 2 above. I also came up with a way to shuffle the deck fairly, by having the players cut the deck.
I originally did not want to mention the application, but it seems after reading a lot on the subject, the original problem spawned all sorts of solutions to different cryptographic questions. Everything is related to Poker.
I read the old papers of SRA about Mental Poker and a bunch of others.
I am focusing on the solution where I am the dealer, thus I know all the cards; however I must be trusted. The other solutions being studied consider that there is no trusted third party, and while I think this might be possible (and someone already claims to have achieved it) it's really hard on the computer and the players.
So I need to find a way, to show to Alice that Bob got the cards he was supposed to get without revealing those cards to Alice.
I may have already achieved this but it doesn't seem obvious, so I need to make it apparent or point it out to the people how it is so. Otherwise I will have to do all sorts of advanced math that most people can't even begin to understand so it might defeat the whole point of it.
In the poker world, that is called collusion. We will have to go by some assumptions that they do not do this, especially if they are direct opponents. Let's pretend that Alice and Bob do not want the other person to know what they are holding. If they did, they would send messages through an alternate channel (IM, chat, irc, phone call, or they are in the same room physically.)
We make an assumption that Alice and Bob will not tell each other their cards unless it goes to a show down.
The answer to this, in case this is not possible, is that, if Bob folds, Alice does not care what cards Bob had. Alice wins the pot.
But there are people out there who want to make sure that everyone got the cards they were supposed to get. Again, I think I have already achieved this, but it is just not obvious or I'm thinking I just have have a high probability of it.
I understand that using hashes just means that there is a 2 in 2^256 or 2^512 odds of 2 strings hashing to the same value or a collision, and not actual mathematical proof. But for most people, they'll accept it as proof enough. That's all I really need at this point. I think the SRA paper also accepts this and shows why it is impossible.