一种基于秘密分享的安全投票系统方案

2022-02-26  本文已影响0人  青漾

一种基于秘密分享的安全投票方案

Zoey zhu

zhuxinzhou999@zju.edu.cn

适用场景

    多个人大规模投票,对于一个问题选择出一个或多个选项,统计每个选项的得分。

交互流程

过程

创建投票数据

    投票人数量;候选人数量;胜选人数量

所需要数据实体

  1. 投票公告板实体
  2. 投票人实体
  3. 份额分配记录实体(X,Y)
  4. 份额累加记录实体

创建投票

输入:投票人数量;候选人数量 胜选人数量 64位验证码

计算:k=log2^{n}+1

投票过程

  1. 选择候选人,获得候选人列表
  2. 初始化pi=0,令pi+=log2^{(m-choose[i])*k}

分片 exportraw()

  1. n为投票人,初始化split_vote=[],共有n-1个元素,
  2. 随机生成n-1个元素,存入split_vote;满足pi'+所有元素和=pi
  3. 用户本地保存pi'
  4. 用户分发split_vote给其他用户

后台处理投票

  1. 接收用户ID,以及split_vote,
  2. 获取投票用户序号list,剔除掉自己
  3. 分配分片数据,记录投票者-分配的用户份额关系

记票

在投票完成后,本地用户开始用选票记票,就是自身的pi'

  1. 遍历数据库,统计我获得别人的分片数据,和我自己的分片数据相加,记录sumi
  2. 获得n:投票人数量,将每个人的sum相加,所有的sum,获得target
  3. 获得k,k=log2^{n}+1

计票过程

算法流程
上一篇 下一篇

猜你喜欢

热点阅读