Encrypted Yes ballot Encrypted No ballot Combined ciphertext (ballot box)
drag ring to rotate

Homomorphic Vote Tallying (2D): Paillier Ciphertext Ring

Every ballot cast here is individually encrypted under a real Paillier public key before it ever leaves the voter. Instead of decrypting each vote to count it, the simulator multiplies ciphertexts together — the defining property of an additively homomorphic cryptosystem, where multiplying encrypted values produces the encryption of their sum. The ring view plots the ciphertext space Z: each vote is a dot positioned by its own encrypted value, and the pulsing shape at the centre is the running homomorphic sum. The strip below shows each ballot's own ciphertext magnitude in cast order. Only when you press Tally does the private key ever get used, running the genuine Paillier decryption formula on the combined ciphertext to reveal the count — no individual ballot is ever decrypted.