博客 · 公平与反作弊知识库

浏览器扑克的 Web Crypto 随机数:它能证明什么,不能证明什么

公平与验证 发布于 2026 年 10 月 1 日 · Fair Poker 研究团队

很多人看到“浏览器里打扑克”,第一反应是:网页里的随机数靠谱吗?简单说,现代浏览器有 Web Crypto API,其中 crypto.getRandomValues() 是专门用于生成密码学强随机值的方法。

但这只解决了一部分问题。安全的扑克洗牌不只是“有随机数”就够了,还需要在开局前有难以预测的输入、清楚的洗牌算法,以及牌局结束后能让玩家复查的证据。

Web Crypto 到底给扑克带来什么

浏览器的 Crypto 接口提供基础密码学能力,其中包括强随机数生成器。MDN 文档说明,crypto.getRandomValues() 可以把密码学意义上的强随机值填入数组:MDN getRandomValues。

对扑克来说,这一点很重要。普通的随机函数可能适合动画、颜色、小游戏效果,但不适合决定牌局公平。洗牌种子必须在牌局开始前很难被其他玩家、服务器或恶意脚本猜到。

这和 扑克洗牌里的密码学熵 是同一件事。熵就是新鲜的不确定性。Web Crypto 是浏览器环境里获得这种不确定性的一种现实方式。

为什么它比普通随机数更适合安全场景

W3C 的 Web Cryptography 规范说明,getRandomValues 用来生成密码学强随机值:W3C Web Cryptography。换成白话,就是它面向安全用途,而不是只让结果“看起来乱”。

扑克即使用娱乐筹码,也属于安全敏感场景。因为如果有人能猜到种子,就可能缩小牌序范围;如果服务器能在看到其他输入后再偷偷选择种子,洗牌就可能被操控;如果玩家无法重放计算过程,平台仍然是在要求玩家相信它。

所以 洗牌到底有多随机 不是单纯数学问题。一副牌的排列数量很大,但公平性还取决于牌序怎么产生、有没有人能影响它。

随机数不能单独证明公平

强随机数不能证明平台一定诚实使用了它。它不能证明牌局开始前牌序已经固定,也不能证明没人看过暗牌,更不能解决合谋、账号被盗或实时辅助这类问题。

NIST 的随机比特生成资料会把熵来源、确定性生成器和测试分开讨论,因为安全随机输出本来就依赖多层机制:NIST 随机比特生成资料。扑克系统还多一层:公开验证。

随机数像原材料,验证记录像收据。玩家需要两者一起看,才能知道牌序不是“看起来随机”,而是按承诺的流程生成。

这就是 一步步验证洗牌 的意义。可验证系统应该留下足够的输入、承诺和最终结果,让玩家或研究者独立重放。

选择浏览器扑克时可以问什么

普通玩家不需要先学会密码学,也能问几个有用问题:

Fair Poker 关注的是可验证的娱乐筹码扑克,所以关键不是说“浏览器天然可信”。更准确的说法是:浏览器可以提供强随机输入,而严谨协议可以把这些输入变成玩家能检查的洗牌结果。

最后一句

Web Crypto 是浏览器扑克随机数的重要基础。它帮助回答“种子能不能被猜到”这个问题。但它不能单独回答所有公平问题。可信的在线扑克,还需要承诺、可重放记录,以及对技术边界的诚实说明。

对可验证公平的实现方式感兴趣?

Fair Poker 是研究德州扑克可验证公平的非营利开源项目:牌堆由参与者浏览器共同加密洗牌,没有发牌服务器,每一手都可独立验证。项目不对公众提供游戏服务;全部源码公开,欢迎下载后在自己的电脑上搭建研究。

下载源码自行研究

本站为非营利开源研究项目,不对公众提供游戏服务;演示仅限研究测试且只用无价值测试筹码,非真钱赌博。本文为教育性内容,不构成任何投注建议。

← 返回文章列表