Back to portfolio

University project · Java · Spring

El Gamal voting

How can a vote be verified without revealing individual choices?

A university project on encrypted voting, built with Java and Spring, using El Gamal encryption and zero-knowledge proofs. Its subject: verifying ballots and tallying votes without revealing individual choices.

At a glance

Setting
University project
Technologies
Java · Spring
Encryption
El Gamal
Proofs
Zero-knowledge proofs

Project context

A university project built with Java and Spring, around two requirements: keeping individual choices private and allowing ballots and the tally to be verified.

A teaching diagram

Three concepts in encrypted voting

  1. Keeping choices private

    El Gamal encryption is central to the topic of keeping individual choices private.

  2. Verifying ballots

    A zero-knowledge proof demonstrates a property without revealing the secret used.

  3. Tallying

    Counting votes without making individual choices public.

Scope. This diagram is neither a security proof nor a description of the implementation protocol.

These concepts are juxtaposed for teaching; their layout does not describe the steps of a vote.Conceptual diagram, not a representation of the implementation architecture or protocol.
  1. 01 · Encrypting without exposing choices

    Encryption protects a ballot’s contents. The project studies El Gamal to explore the confidentiality of individual choices in a voting system.

  2. 02 · Verifying ballots

    Verification should not require revealing a vote. Zero-knowledge proofs allow exploration of the distinction between a property to verify and the information that must remain private.

  3. 03 · Tallying without revealing choices

    Tallying concerns the collective result rather than publishing every choice. The project’s subject combines that result with ballot verification without exposing individual votes.