Mein Problem ist nun, dass jeder der den Netzwerkverkehr beobachtet einfach nachverfolgen kann welche UID wo positioniert wird.
Ich sehe keine Möglichkeit, das zu verhindern,
Bitte erklär erstmal, wie die Spieler untereinander kommunizieren und _wer_ beispielsweise den Sieger ermittelt. Wenn die Spieler tatsächlich direkt miteinander kommunizieren, wird es relativ schwierig.
Eine Möglichkeit wäre, dass der Spieler den anderen Spielern nicht die UID seiner Karte schickt, sondern (nach einem bestimmten Algorithmus) jedem der anderen Spieler nur einen (veränderten) Teil der UID. Nach der verdeckten Phase schicken sich alle Spieler gegenseitig alle UID-Teile der anderen Spieler zu und erst nach dem Zusammensetzen wird die UID sichtbar. Somit besteht auch nicht die Möglichkeit, dass derjenige Spieler schummelt, der die verdeckte Karte gelegt hat.
Eine andere Möglichkeit ist, dass der Spieler, der die verdeckte Karte legen soll mittels asymmetrischer Verschlüsselung einen privaten und öffentlichen Schlüssel generiert. Den öffentlichen Schlüssel verteilt er und verschlüsselt mit diesem die UID. Vom privaten Schlüssel verteilt er nur einen MD5 Hash (o.ä.). Nach der Phase gibt er seinen privaten Schlüssel preis. Die Anderen können dadurch sicherstellen, dass er die UID gelegt hat, die er zu legen vorgegeben hat.
Ein zentraler Server würde das ganze allerdings stark vereinfachen...