probabilistic encryption and how to play mental poker keeping secret all partial information .
A method for obtaining digital signatures and public-key cryptosystems