コイン投げゲームをコミットメント・スキームを使って Java で実装したいと思ってます

Alice が表か裏かを示した暗号化したデータを鍵Aで暗号化して、Bob に渡します
その後、Bob が表か裏かを言います。その宣言の後、Alice は鍵AをBobに渡し、暗号化された表か裏かを示したデータを開きます

とはいえ、この場合、Alice は表か裏か結果を知ってから、鍵を渡すことになってしまいます
うまく鍵を調整すれば、鍵の差し替えることで、裏か表かを後追いで言い当てる、みたいなこともできますよね

これを回避するにはどうすればいいですか。

表か裏かを書いたデータと一緒に、電子署名をつければ、よさそうな気がします。(SHA256withRSA で署名すると、1024bitあるので)
しかし、私は暗号の専門家ではないのでこれでも本当に安全かわかりません

それとも、コイン投げをするのにもっとスマートな何か方法がありますか?