是什么让 Mersenne Twister Tempering 功能可逆?

2024-01-03

众所周知,MT回火功能是可以逆转的。可以在线获取源代码来执行此操作here http://b10l.com/?p=24。我试图弄清楚这是如何工作的,以及如何以编程方式解决这个问题和类似的问题。

我正在努力解决的是,对有限大小的变量进行移位操作会导致不可逆的数据丢失。类似地,按位 AND 运算也会导致永久性数据丢失,但示例代码 http://b10l.com/?p=24提供可以将任何值反转为其原始预调状态!

另一件事是我觉得令人困惑的是,非临时移位操作的移动方向和数量与临时函数相同。


考虑一个结构菲斯特网络 http://en.wikipedia.org/wiki/Feistel_cipher。基本操作原理是将数据分成两部分,并将一部分哈希为掩码,以便与另一部分进行异或。即使哈希本身不是可逆的,这也是可逆的。在解密过程中,使用相同的(可能具有破坏性的)哈希运算来生成与之前相同的掩码,并且与其他部分进行异或运算,从而将其恢复为其原始值。可以使用不同的分割重复此操作,以便所有位都有机会影响所有其他位并受所有其他位影响,并且只需反向重放该链即可对其进行解密。

类似地,破坏性移位和按位与仅用作异或掩码,用于排列原始值的完整副本。

k ^= k >> 11表示取 k 的高 21 位并对 k 的低 21 位进行异或。 k 的前 11 位保持不变,我们可以通过再次对这些位进行异或运算来使用它们来恢复 k 的下 11 位。然后我们可以使用这些新发现的k的原始位来恢复k的其余部分的原始值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是什么让 Mersenne Twister Tempering 功能可逆? 的相关文章

  • 当使用“L'Ecuyer-CMRG”RNG 时,R 不会重置种子?

    我在 R 中做了一些并行模拟 我注意到种子 使用 L Ecuyer CMRG rng 时不会更改 我正在读书 Parallel R 一书 选项 mc set seed TRUE 应该给出 每次调用 mclapply 时 每个工作人员都会获得
  • C++11 从频繁变化的范围生成随机数

    问 如何从先验未知范围生成 许多 均匀分布的整数 就性能而言 生成数百万个数字 首选方式是什么 上下文 在我的应用程序中 我必须在许多地方生成许多伪随机数 我对生成器使用单例模式来保持应用程序运行的可重复性 在我的例子中 分布总是均匀的 但
  • 真随机数生成器[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 抱歉 这不是一个 真正的 问题 但我记得以前在这里看到过一篇关于随机随机化随机发生器以生成真正随机数的帖子 而不仅仅是伪随机数 如果我搜索它 我看不
  • 汇编语言中的伪随机生成器

    我需要一个用于课程中分配的汇编程序的伪随机数生成器算法 并且我更喜欢一个简单的算法 但是 我无法使用外部库 什么是好的 简单的汇编伪随机数生成器算法 简单的方法是选择两个大的相对素数 a 和 b 然后继续将随机数乘以 a 并加上 b 使用模
  • PostgreSQL 的 random() 函数的质量如何?

    假设我正在创建一个表foo有一个柱子bar这应该是一个非常大的随机整数 CREATE TABLE foo bar bigint DEFAULT round 9223372036854775807 bigint double precisio
  • 生成一系列值之间的随机双精度值

    我目前无法生成 32 768 和 32 768 之间的随机数 它一直给我相同的值 但小数字段有微小的变化 例如 27 xxx 这是我的代码 任何帮助将不胜感激 include
  • 在 Ruby 中生成符合概率分布的数字数组?

    假设我有 100 条记录 我想模拟出created at日期 以便它适合某些曲线 有没有一个库可以做到这一点 或者我可以使用什么公式 我认为这是沿着同一条轨道 生成具有概率分布的随机数 我不太了解它们在数学中是如何分类的 但我正在研究以下内
  • 如何为 BN_generate_prime 播种 PRNG

    我一直无法找到关于在 openssl bn h 中使用 BN generate prime 生成素数的答案 另外 我如何播种该函数使用的 PRNG 单独的问题但与我的代码相关 我正在编写一个程序来生成 RSA 密钥对 如何检查高位是否设置为
  • Java 随机种子

    我需要测试一个 Java 程序 20 次 并且需要设置随机种子以便可以重复测试 如果我将初始种子设置为 0 然后在每次运行时递增 1 即 1 2 3 等 即使种子相距不远 此方法是否仍能确保完全随机性 谢谢 任何种子都将提供与标准的任何其他
  • 是什么让 Mersenne Twister Tempering 功能可逆?

    众所周知 MT回火功能是可以逆转的 可以在线获取源代码来执行此操作here http b10l com p 24 我试图弄清楚这是如何工作的 以及如何以编程方式解决这个问题和类似的问题 我正在努力解决的是 对有限大小的变量进行移位操作会导致
  • 使用WELL512获取一定范围内的随机实数

    我正在使用中描述的 WELL512 伪随机数生成器函数这张纸 http www lomont org Math Papers 2008 Lomont PRNG 2008 pdf 该函数返回一个随机数unsigned long value 如
  • PRNG 需要线程安全吗?

    只要并发调用不会导致 seg v 或返回相同的值 就有什么理由可以防止竞争条件和数据损坏PRNGs http en wikipedia org wiki Pseudorandom number generator当这些错误的主要影响是不可预
  • 使用 NativePRNG 的 SecureRandom 与 SHA1PRNG

    我需要生成加密的强随机数和字节数组 为此 我使用 JavaSecureRandom班级 但我不确定根据其加密强度来选择哪种 PRNG 算法 以下哪种情况会产生更难以预测的数字 或者说它们是平等的吗 SecureRandom nativePr
  • 使用 Fortuna PRNG 在计数器模式下使用 AES 进行随机访问加密:

    我正在构建基于 AES 的文件加密 该加密必须能够在随机访问模式下工作 访问文件的任何部分 例如 可以在 Counter 中使用 AES 但众所周知 我们需要一个不会使用两次的唯一序列 在这种情况下 可以使用简化的 Fortuna PRNG
  • POSIX srandom(...) 和 random() 函数的 Windows 等效项?

    我正在尝试将一些代码从 UNIX 移植到 Windows 并且我需要 POSIX 的实现srandom x and random 对于给定的种子函数x 生成与符合 POSIX 1 2001 的编号规则相同的编号规则 Windows 上有哪些
  • 为什么这个 random() 分布看起来不对称?

    编辑 这是使用 Google Chrome 36 我正在摆弄 html5 画布 生成随机分布在立方体内的点并将其投影到 2D 画布上 令人惊讶的是 结果看起来一点也不对称 我怀疑 Javascript 的 Math random 让我失望了
  • 在对其输出进行 SHA-1 处理后,可预测的随机数生成器如何(如果有的话)变得更加安全?

    本文 http www quadibloc com crypto co4814 htm指出 尽管 Mersenne Twister 是一个非常好的伪随机数生成器 但由于非常简单的原因 它本身并不具有加密安全性 可以从生成器在任何给定时间所具
  • 使用随机数生成引擎

    我正在尝试使用兰德 字节 https www openssl org docs crypto rand htmlOpenSSL 的 API 但我想尝试使用各种随机数生成引擎 在 OpenSSL 中是否有推荐的生成随机字节并添加熵的方法 我在
  • 我需要一个便携式、一致的伪随机数生成器

    I am writing a kid sister encryption http enfranchisedmind com blog posts the kid sister crypto manifesto function and I
  • 寻找 5 字节 PRNG 的种子

    这是一个古老的想法 但从那时起我就无法找到一些相当好的方法来解决它提出的问题 所以我 发明 了 见下文 一个非常紧凑的 在我看来 性能相当好的 PRNG 但我无法找出算法来为其在大位深度上构建合适的种子值 我当前的解决方案只是暴力破解 它的

随机推荐

  • 设置使用 anaconda 与 VS Code 和集成 Git 终端时卡住

    我想学习数据科学 所以使用了一些非常流行的 Python 模块 如 Pandas Matplotlib Numpy 等 所以我清理安装了 Anaconda 现在使用它作为我的默认 Python 解释器 还使用 Conda 来安装包和创建虚拟
  • Httpclient multipart/form-data 同时发布图像和 json

    我正在尝试使用 C 代码在一个请求中上传图像和 json 但服务器总是返回 400 错误请求 使用 fiddler 执行相同的请求返回状态代码 200 帮助 这是我的小提琴手代码 WebKitFormBoundary7MA4YWxkTrZu
  • OkHTTP Websocket:连接上的蒸汽意外终止

    我正在尝试连接到 Stack Exchange 聊天 Websocket websocket 用于接收聊天中的新事件 例如新消息 以下是用于创建 Websocket 的代码 String wsUrl getWsUrl Request wsR
  • 重用字符串流而不需要重新分配

    我试图弄清楚如何重用 stringstream 对象 而无需每次在流中放入某些内容时都需要重新分配底层字符串 我已经发现这个答案 https stackoverflow com questions 624260 how to reuse a
  • JNI-多线程

    我有一个从 C 调用的 Java 函数的 JNI 包装器 我试图从不同的线程调用一些方法 但在尝试获取 JNIEnv 指针的新副本时出现错误 代码我 m 使用如下并在每个方法中调用 JNIEnv GetJniEnvHandle Thread
  • 为什么 WAMP 中的 Apache 2.1.7 不将 PHP 错误记录到 PHP 错误日志中?

    我已经安装了WAMP 并决定在最新版本的WAMP中使用默认的Apache 2 1 7 原因是我的网站所在的主机服务器也使用 2 1 7 之前 我在 WAMP 中使用 Apache 2 2 11 因为我的上一个主机也使用该版本 我现在遇到的问
  • 使用 golang 打印可读变量

    如何以可读的方式打印地图 结构或其他内容 使用 PHP 您可以做到这一点 echo pre print r var echo pre or header content type text plain print r var 使用Gofmt
  • 如何从不同文件夹中的另一个.py调用def

    我有以下结构 utils dir 有generator py 文件 其中有3 个def 我在 inline dir 中有 test py 我正在尝试在 test py 中使用生成器 py 中的 defs inline dir 和 utils
  • 方法产量如何运作?

    在javadoc中有说yield方法 导致当前正在执行的线程对象暂时暂停并允许其他线程执行 凯瑟琳 塞拉 Katherine Sierra 和伯特 贝茨 Bert Bates SCJP 书中说 Yield 应该做的是 使当前正在运行的线程头
  • 标准形式 matplotlib -- 将 e 更改为 \times 10

    在 matplotlib 中 轴有时以标准形式显示 数字由刻度显示 类似 1e 7 的内容由轴显示 有没有办法将其更改为写出的 times 10 7 我不想更改每个刻度上的标签 我希望更改出现在轴底部的 1e 7 文本 最简单的答案 使用乳
  • 如何验证或验证 JWT 签名?

    我正在尝试在 Java 中验证 JWT 令牌 如何验证或验证 JWT 令牌的 JWT 签名 您可以使用 Spring Security 中的 JWT 库 网址为https github com spring projects spring
  • Android 短信发送状态

    我需要在我的 Android 应用程序中实现一个功能来发送短信 我找到了许多与此相关的教程 但无法获得交付状态 失败或正常 以下是我的短信方法 private void sendSmsMessageWithStatus String pho
  • SWT Shell 根据子项调整大小

    我正在研究这个Composite画布上还有其他Composite可以添加和删除 我对整个布局概念的理解仍然很模糊 当孩子被添加到容器中时 考虑到容器有一个GridData它填充了父级 父级不应该也知道子级调整了大小吗 由于外壳 顶部父级 的
  • Google 可视化 API 示例中的“无效 JSON 字符串”

    我大致如下这个例子 http code google com apis chart interactive docs dev gviz api lib html tojsonexample 但一定是在做一些愚蠢的事情 服务器端Django视
  • C# winform 应用程序未获取 Machine.Config 中的 maxTimeout 值

    我一直在开发一个带有 Oracle 10g 数据库的 winform 应用程序 该应用程序正在使用TransactionScope并想修改maxTimeOut指定的值机器配置文件 我的机器配置文件位于以下位置 我为此应用程序使用 net 4
  • 改进 malloc() 算法的下一步是什么? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我自己写的简单malloc 函数 我想创建更快 更高效的变体 我编写的函数使用线性搜索并在内存中顺序连续分配 改进该算法的下一步是什么
  • 如何保存拟合的 R 模型以供以后使用

    很抱歉这个新手问题 如果我适合lm 型号或loess 模型 并将模型保存在文件或数据库中的某个位置 以供第三方以后使用predict 方法 我是否必须保存整个模型对象 由于返回的模型对象包含原始的原始数据 因此返回的对象可能会很大 如果您包
  • 使用 POI 在 Excel 中设置时间

    我正在尝试使用 Java 中的 POI api 创建 Excel 工作表 在该 Excel 工作表中 我想要一个仅包含 TIME 的单元格 通过设置此值 我们可以将单元格包含在该特定列的求和中 就像我们在数字列中所做的那样 为此 我们需要将
  • Java/XSD 解析

    我怀疑是否有这样的事情 但我想问一下 有谁知道Java中是否有一个库可以读取xsd文件并 创建 定义的元素 例如以字符串格式在代码中使用 例如 阅读以下架构
  • 是什么让 Mersenne Twister Tempering 功能可逆?

    众所周知 MT回火功能是可以逆转的 可以在线获取源代码来执行此操作here http b10l com p 24 我试图弄清楚这是如何工作的 以及如何以编程方式解决这个问题和类似的问题 我正在努力解决的是 对有限大小的变量进行移位操作会导致