有 C++11 CSPRNG 吗?

2024-01-11

众所周知,梅森扭转者加密上不安全 http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/efaq.html:

Mersenne Twister 不具有加密安全性。 (MT 是基于 线性递归。任何由 a 生成的伪随机数序列 线性递归是不安全的,因为从足够长的子序列 的输出,我们可以预测其余的输出。)

但有很多来源,比如斯蒂芬·T·拉瓦韦杰 //channel9.msdn.com/Events/GoingNative/2013/rand-Considered-Harmful乃至这个网站 //stackoverflow.com/a/7114482/5287986。建议几乎总是(逐字)像这样使用 Mersenne Twister:

auto engine = mt19937{random_device{}()};

They come in different flavors, like using std::seed_seq or complicated ways of manipulating std::tm, but this is the simplest approach.

虽然std::random_device 并不总是可靠的 http://en.cppreference.com/w/cpp/numeric/random/random_device:

std::random_device可以按照以下方式实施 实现定义的伪随机数引擎,如果 不确定源(例如硬件设备)不可用于 实施。在这种情况下每个std::random_device对象可能 生成相同的数列。

The /dev/urandom vs /dev/random debate rages on http://www.2uo.de/myths-about-urandom/.

但是,虽然标准库提供了很好的 PRNG 集合,但它似乎没有提供任何 CSPRNG。我更喜欢坚持使用标准库,而不是使用 POSIX、仅限 Linux 的标头等。可以操纵 Mersenne Twister 以使其在加密上安全吗?


Visual Studio 保证random_device是加密安全且不确定的:https://msdn.microsoft.com/en-us/library/bb982250.aspx https://msdn.microsoft.com/en-us/library/bb982250.aspx

如果您想要更快或跨平台的东西,您可以使用 GnuTLS:http://gnutls.org/manual/html_node/Random-number- Generation.html http://gnutls.org/manual/html_node/Random-number-generation.html它提供质量可调的随机数。GNUTLS_RND_RANDOM我想这就是你想要的。

正如一些人已经说过的那样,请忘记加密环境中的机器翻译。

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

有 C++11 CSPRNG 吗? 的相关文章

随机推荐

  • 以编程方式重新启动 React Native 应用程序

    是否可以在不编写任何本机代码的情况下以编程方式重新启动 React Native 应用程序 例如 我从答案中知道这个问题 https stackoverflow com questions 15564614 how to restart a
  • 组织捕获和计时行为不当

    我相信你们中的一些人可能已经 从我最近提出的一系列问题中 了解到我正在 emacs 上设置组织模式并浏览 Brent Hansen 令人印象深刻的组织set up http doc norang ca org mode html 他是一个计
  • 在 for 循环中使用 ggplot2 绘制多个图

    我看了这些问题 1 https stackoverflow com questions 3824412 ggplot2 use options for multiple plots and 2 https stackoverflow com
  • UITableView 部分边框

    有没有办法在 UITableView 部分 组样式 上设置边框 我的意思并不是要更改该部分中单元格的边框 我想要整个部分周围有一个边框 像这样 Note 虽然上图仅显示了单个部分的一部分 但所讨论的表实际上有多个部分 每个部分的长度都是可变
  • 使用 google-api-php-client 下载文件

    我在尝试使用位于以下位置的 php 客户端从 Google Cloud Storage 下载文件时遇到问题https code google com p google api php client https code google com
  • Active Admin 中的自定义表单

    我正在 Active Admin 0 5 中创建自定义表单 我已经注册了一个页面并通过 DSL 创建了一个表单 ActiveAdmin register page Planning namespace gt pos admin do con
  • 如何使用html和css绘制虚线

    如何使用 html 和 css 绘制虚线 如下所示 不是虚线 可以使用这个边框 1px虚线 但需要增加破折号的长度尺寸 而不是宽度 Use repeating linear gradient https developer mozilla
  • 电话软件开发语言

    是否存在通用的手机开发语言 我的意思是 例如 php 或 java 或其他 编辑 我们必须开发一些电话应用程序 并且我们正在寻找不同设备 黑莓 iPhone 摩托罗拉等 中最好的可重用语言 Java 已经非常接近了 但它还远未达到通用性 i
  • 我可以在 Visual Basic 中使用 C++ 函数吗?

    我对编程有点陌生 但我已经制作了一个非常好的库来计算数学问题 例如二次方程和许多其他问题 现在我遇到了一个朋友 他正在用 VB 进行一些编程 我们在想是否可以将我的函数从 C 导入到他的代码中 以便他可以在需要时调用它们 这样我们就可以制作
  • 有没有办法删除逻辑应用运行历史记录/日志?

    有没有办法从逻辑应用中删除所有运行历史记录日志 我知道现在正在测试 日志保留时间 的预览 但删除所有日志的最频繁时间是每周一次 我需要能够更频繁地进行此操作 在本例中是每三天一次 还有其他方法可以删除逻辑应用日志 历史记录吗 EDIT 查看
  • NodeJS 模块安装

    我正在尝试在无法访问互联网的计算机上安装 NodeJS 服务器 我复制了 exe 并执行了它 但现在我需要安装几个模块 所以我的问题是 我可以简单地从我的电脑复制模块吗 或者我必须将服务器连接到互联网并使用 npm 吗 编辑 我已经将所有必
  • Java集群中如何最好地进行文件锁定

    我有一个在 JBoss 上运行的服务器集群 我需要以安全的方式更新文件 具体来说 我需要 锁定文件 A 如果它已经被锁定 则以安全的方式阻塞 这样如果 JVM 突然死机 就不会出现悬空锁 30秒的超时就可以了 读取文件A 改变内容 将文件写
  • t 作为 R 中全局变量的名称:不可能吗?

    我想使用 t 作为 R 中全局变量的名称 但它不允许我这样做 sq1 function t lt lt 7 我收到以下错误 Error in sq1 cannot change value of locked binding for t 我
  • 接收信号的 QML 元素失效了?

    我有类似以下的代码 id myComponent signal updateState property variant modelList Repeater model modelList MyButton Connection targ
  • 3D 空间中向量的旋转和方向 - 逆序

    我在 3D 空间中有两个向量 S 开始 和T 目标 我想找到允许这种变换的旋转矩阵 RM 我知道通过计算叉积 S T我得到了旋转轴 之间的角度S and T是 谁 给的tan S T S T where S T is the 点积S 和 T
  • 使用libavcodec解码H264视频,C

    我正在尝试使用 ffmpeg libavcodec 解码原始 h264 文件 但无法使其正常工作 目前输出应该是原始 YUV 文件 可以用GCC编译代码 gcc o decoder decoder c L lib llibavcodec l
  • 如何使用java.sql.Date节省时间?

    目前 在我的代码中 我正在使用以下 setter 方法将当前日期和时间保存到数据库 但它只保存日期 而不保存时间 emp setJoiningDate new java sql Date System currentTimeMillis 方
  • 可以在 Folium 中绘制路径吗?

    我阅读了许多与此相关的文档 但找不到我想要的东西 我想绘制两点之间的步行路径 是否可以 如果没有 python 中是否有其他库用于此目的 当然可以 使用PolyLine https python visualization github i
  • 无法使用 Google 云存储和 Cloud Functions for Firebase 下载文件

    我遇到的问题与此相反 使用 Cloud Functions for Firebase 和 google cloud storage 删除图像时出现问题 https stackoverflow com questions 43178152 i
  • 有 C++11 CSPRNG 吗?

    众所周知 梅森扭转者加密上不安全 http www math sci hiroshima u ac jp m mat MT efaq html Mersenne Twister 不具有加密安全性 MT 是基于 线性递归 任何由 a 生成的伪