-
公开的投票
- 有一个很严重的问题, 既然是公开的, 那么既没有投票人的限制, 也没有票数限制
-
非公开记名投票
- 仅限注册用户
- 注册用户登录进行投票
-
非公开不记名投票
- 仅限注册用户
- 注册用户登录进行投票, 拿到签名后的选票
- 退出登录投票
- 匿名投票需要解决的两个问题, 如何既能「保证」, 又能 「保护」投票人的身份
- 关键点, 盲签名
- 在**机构已经验证投票人身份(登录), 但是不知道投票内容(盲化)的情况下, 对投票签名
- 签名之后的投票通过匿名渠道发送给**机构/计票方, 用公钥可以验证
- 盲变换, 发送
- 签名
- 去盲, 得到对原消息的签名
- 随机杂凑因子范围有限, 会使得不同用户的相同选票重复, 导致无法正确计票
- 解决方案
ticket = {
voteId: xx,
optionId: xx,
uuid4: xxxxxxx,
}
- [ ]选票 JSON ->
- 盲化 得到BASE64 ->
- 发送签名 返回 BASE64 ->
- 解盲, 校验
- 生成选票(明文选票 + 签名 BASE64)
- 发送明文 + 签名
- 返回 Tracking Number
- Tracking Number 用于查询选票记录