Нужно написать клиент-серверную программу которая будет показывать простейшую систему электронного голосования. (и клиент и сервер на локалхосте)
1)Юзер интерфейс: таблица из пяти имён участников выборов с возможностью выбрать только одного (и кнопка "сабмит").
2)Клиент генерирует 100 наборов голосов. Набор голосов выглядит так: (10000,серийный номерN), ( 01000, серийный номерN), (00100, серийный номерN), (00010, серийный номерN), (00001, серийный номерN) - то есть каждый набор содержит все возможные варианты голоса. Серийный номер для голосов в одном наборе один и тот же, НО в каждом составе - разный.
3)Клиент отсылает свой идентификатор на сервер. Сервер проверяет, есть ли клиент в списках,и голосовал ли он уже(создать "избирательный список" - файл с несколькими идентификаторами,и каждого, кто проходит проверку, отмечать как проголосовавшего)
4)Клиент отсылает сто наборов голосов(зашифрованных). ОТДЕЛЬНО высылает 99 затемняющих множителей.
5)Сервер расшифровывает 99 наборов, проверяет их правильность(одинаковый номер серийный в наборе, все голоса в наборе разные). Оставшийся, 100-ый набор, сервер подписывает вслепую(подписывает каждый голос в наборе, не расшифровывая набор!), и отсылает набор назад.
6)Клиент расшифровывает набор, выбирает из него нужный голос(уже подписанный сервером).
КОНЕЦ СЕССИИ.
НОВАЯ СЕССИЯ:
Клиент АНОНИМНО высылает выбранный голос. Голос расшифровывается сервером и заносится в базу(в нашем случае в переменную или в файл). Считаем сумму, и выводим результат.
Полезные ссылки:
https://ru.wikipedia.org/wiki/%D0%A1%D0%BB%D0%B5%D0%BF%D0%B0%D1%8F_%D0%BF%D0%BE%D0%B4%D0%BF%D0%B8%D1%81%D1%8C#.D0.9F.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB_RSA
http://web.mit.edu/6.857/OldStuff/Fall02/handouts/L15-voting.pdf
http://www.ihec.iq/ihecftp/Research-and-Studies/Second-Scientific-Conference/drmahmood-research.pdf
