首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >完全洗牌可能与有限的原始熵?

完全洗牌可能与有限的原始熵?
EN

Cryptography用户
提问于 2019-12-30 11:25:56
回答 2查看 1.1K关注 0票数 10

我正试图以一种完美的方式洗牌一个标准的52牌牌(每个结果都有可能在一个平等的机会)。在这一点上,我不关心对它的密码分析攻击。

我遇到了一些可能在密码理论中得到解答的问题:

  1. 大多数PRNG都是从某种内部状态跑掉的。一副牌有52张!洗牌,这是一个220+位数。是否可以使用具有64、128或160位内部状态的PRNG生成所有洗牌?我的直觉说不行。即使要洗牌,我只需要52个小的随机整数,一个内部状态小于52的PRNG!可能无法生成所需的所有52个不同的数字序列。这是真的还是我完全错了?
  2. 如果我在上面,这是否意味着我无法在大多数现代编程语言中产生真正的洗牌?Java的SecureRandom只有128位的内部状态,甚至/dev/rand使用基于MacOS (160位)的基于SHA-1的PRNG,所以即使使用“黄金标准”密码随机源也是不够的。我有什么选择?那JavaScript呢。我在浏览器中有什么选择?
  3. 我想出的选择是使用CPU内置的RDSEED命令获得256位真正随机的种子,然后我想使用具有256位内部状态的PRNG来洗牌。这是个明智的选择吗?最简单的方法是什么?某种基于SHA-256散列的PRNG?
EN

回答 2

Cryptography用户

发布于 2019-12-30 18:15:44

与以前的答案不同,我会采取不同的态度。假设我们真的只有128位熵,这能阻止我们在洗牌时应用确定性算法吗?

从纯粹的计数角度看,128位输入的确定性函数不可能有52位!不同的可能产出。

但是,如果我们使用加密安全的PRNG种子128位熵源,我们可以很容易地洗牌一副牌,使它是无法区分的真正的随机洗牌。即使我以这种方式洗牌10亿个甲板,你在你的电脑上处理了很多年的数据,你仍然无法分辨这种有限的种子洗牌和真正的随机洗牌的区别。

所以我问一个真正的均匀随机洗牌的优点是什么?

票数 1
EN

Cryptography用户

发布于 2021-07-08 18:17:36

状态不足的PRNG也可以实现完全的洗牌。

这样做的方法是做多轮洗牌。每轮重新播种种子。最重要的是熵必须是足够的。

一个实现完全改组https://github.com/fsssosei/complete_随机播放的Python库

票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/76723

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档