Note
SecRandom 以 GNU GPLv3 协议发布!您可以修改和再发布源代码,但再发布的衍生作品也必须遵循 GNU GPLv3
SecRandom 是面向课堂、团队、活动、决策等场景的公平抽取应用
- 点名:支持普通随机、历史平衡及重复控制
- 闪抽:通过独立悬浮窗快速抽取学生
- 抽奖:支持奖品盘和库存抽取,学生与奖品独立管理
- 丰富呈现:统一配置动画、结果、语音、音乐和通知,并支持通知失败回退
- 根据历史次数、抽取间隔、分组、性别等因素动态调整权重,降低重复与分布失衡
- 使用稳定内部标识维护历史,学号、编号和名称仅作为显示信息
- 支持多名单、多奖品池及
.xlsx、.xls、.csv导入、映射和预览 - 每轮抽取均保存历史,方便查询和回顾
- 每次抽取都会自动保存证明记录文件
- 可以选择让服务器参与并见证抽取过程
- 可以通过官方渠道重新检查抽取结果
- 设置、名单和历史记录都可以导入、导出、备份和恢复
- 备份可以包含名单、历史、抽取证明、图片、音频等信息,但不会包含密码等安全信息
- 支持使用密码、TOTP或 U 盘保护重要操作,并可设置哪些操作需要验证
| 模式 | 可以做到 | 不能证明 |
|---|---|---|
| 离线证明 | 复查已完成的抽取过程;事后改动证明文件、删除旧证明或删光重建都能被发现 | 不能证明抽取之前本地程序、随机种子或名单未被改动,也不能排除抽取前反复试验后选择结果 |
| 在线见证 | 保护服务端锁定后的抽取流程 | 不能证明名单真实、完整,或提交前未被筛选 |
补充说明:
- 每次抽取都会立即保存本地可重放证明,并把同一份证明提交给服务端重放签名;证明摘要还会交给第三方时间戳服务(只发送摘要,不发送名单或抽取内容)
- 本机证明按追加式哈希链保存,删除或改写会留下缺口;服务端会记住每台设备见过的链头,把本地证明删光重建会被识别为链位置回退
- 证明会承诺抽取时所用名单的「记录 ID → 姓名/学号/组别」映射摘要,因此抽取之后改名单、把中签记录指向别人会被发现
- 抽取之前筛选名单(先删掉或禁用某个学生再抽)无法被证明:摘要只覆盖抽取那一刻的名单,要覆盖这类情况需要「抽取前先向第三方确认名单」的流程,目前不做
| 版本 | 技术栈 | 阶段 |
|---|---|---|
| v1 | Python + PyQt5 + qfluentwidgets | 初代桌面实现 |
| v2 | Python + PySide6 + qfluentwidgets | Qt 技术栈演进 |
| v3 | C# + Avalonia + FluentAvalonia | .NET 桌面重构,持续发展抽取、验证与桌面集成能力 |
- GitHub Releases 提供各版本的发行包与更新说明
- 官方下载页面 提供下载最新版入口
- 自动更新在部署前验证已签名的发布清单以及制品的长度和哈希;请以每个发行版本提供的安装包和说明为准
- SecRandom 使用 GNU GPLv3 协议发布
- 第三方组件、版权和分发审查信息见 THIRD-PARTY-NOTICES.md
- SecRandom 通过历史平衡的权重与候选过滤策略帮助降低重复抽取、改善长期分布;它不替代对现实名单、规则或组织流程的管理,也不对这些现实条件作出软件无法验证的保证
感谢每一位为 SecRandom 提交代码、报告问题、完善文档和提供反馈的贡献者。头像由 GitHub 贡献者数据动态生成,点击可前往 GitHub 贡献者页面 查看完整统计
Copyright © 2025-2026 SECTL