Homomorphic Vote Tallying (2D): Paillier Ciphertext Ring
A 2D ring-and-strip view of a real Paillier cryptosystem: cast encrypted Yes/No ballots, watch the election authority multiply ciphertexts together on a draggable ciphertext ring, and only decrypt the final combined tally -- never an individual vote.
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 Zn²: 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.
A 2D ring-and-strip view of a real Paillier cryptosystem: cast encrypted Yes/No ballots, watch the election authority multiply ciphertexts together on a draggable ciphertext ring, and only decrypt the final combined tally -- never an individual vote.
2D · HTML5 Canvas 2D · 60 FPS target · runs fully client-side, no install