We propose in this paper a practical and secure electronic voting protocol for large-scale online elections. Our protocol satisfies a large set of important criteria that has never been put together in a single protocol before. Among all electronic voting schemes in the literature, Sensus, a security-conscious electronic voting protocol proposed by Cranor and Cytron [CC97], satisfies the most of what we desire. Sensus has been implemented and used in mock elections. However, Sensus suffers from several major drawbacks. For instance, we show that even if all voters follow the Sensus protocol honestly, some voters' votes may still be replaced with different votes without being detected. Our protocol overcomes these drawbacks.