【问题标题】:High entropy random data creating functions?高熵随机数据创建函数?
【发布时间】:2015-01-21 10:00:13
【问题描述】:

是否有函数可以产生“无限”量的高熵数据?此外,是否存在一次又一次(按顺序)产生相同随机数据的函数?

我知道它们存在,但它们有特定的名称吗?

用例示例:

  • 使用函数生成100位随机数据​​。 (太棒了!)但同时保持高熵值。
  • 使用相同的函数生成 10000 位随机数据​​。 (生成的前 100 位与之前生成的 100 位随机数据​​相同)。在保持高熵值的同时

此外,我将如何自己构建这些功能?

【问题讨论】:

  • 没有确定性函数可以产生比输入熵更多的输出。
  • 但也许你想要的是一个流密码。给定大约 150 位的熵,它们可以输出几乎无限量的数据,这些数据在计算上与真正的随机数据无法区分。

标签: math random bits entropy


【解决方案1】:

您最有可能在寻找Pseudo-Random Number Generators

  • 它们由种子初始化,因此具有有限的熵。
  • 好的生成器会产生一个不错的熵,假设您仅根据其输出来判断它(因此您忽略种子和/或生成数字的算法,否则熵显然为 0)。

    大多数 PRNG 算法生成的序列通过多个测试中的任何一个均匀分布。这是一个悬而未决的问题,也是密码学理论和实践的核心,是否有任何方法可以在不知道所使用的算法和状态的情况下将高质量 PRNG 的输出与真正的随机序列区分开来它已被初始化。

  • 所有 PRNG 都有一个周期,在此之后生成的序列将重新启动。

    PRNG 的周期是这样定义的:在所有起始状态中,序列的无重复前缀长度的最大值。周期受状态数的限制,通常以位为单位。但是,由于每个“状态”位的添加,周期的长度可能会加倍,因此很容易构建周期足够长的 PRNG,以用于许多实际应用。

因此,要拥有两个不同长度的序列,其中一个是另一个的前缀,您只需两次使用相同的种子运行 PRNG。

自己构建它们会非常棘手,但一个相当不错且简单的方法是 Mersenne Twister,它可以追溯到 1998 年,并在 a paper by Matsumoto and Nishimura [1] 中定义。

一个简单的例子是linear congruential generator

[1] 松本,M.;西村,T.(1998 年)。 “梅森捻线器:一个 623 维均匀分布的均匀伪随机数发生器”。 ACM 建模和计算机模拟交易 8 (1): 3-30。 doi:10.1145/272991.272995.

【讨论】:

  • 这正是我想要的。虽然我不关心伪随机数生成器的加密质量——拥有可重现的“高熵”数据函数完全符合我的要求。是时候改变世界了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多