gpt4 book ai didi

c++ - 我们如何使 std::uniform_int_distribution 密码安全?

转载 作者:行者123 更新时间:2023-11-30 04:42:38 27 4
gpt4 key购买 nike

在 C++ 中,我们如何使 std::uniform_int_distribution 密码安全?例如,以下代码是否生成密码安全的均匀随机数?如果不是,我们该如何纠正呢?

#include <iostream>
#include <random>

int main(void){
std::default_random_engine generator;
std::uniform_int_distribution<int> distribution(0,9);
int p[10]={};

for (int i=0; i<10; ++i) {
int number = distribution(generator);
++p[number];
}
}

最佳答案

C++ 标准中提供的随机引擎都不是“加密安全的”,甚至 std::random_device 也只是指定生成“非确定性”随机数(充其量),而不必强加任何特定的安全要求。

特别是 uniform_int_distribution(与所有其他 C++ 分发类一样)has implementation-defined behavior .例如,C++ 标准库的实现可以使用拒绝采样或其他策略来实现 uniform_int_distribution。这意味着从安全角度来看,uniform_int_distribution 不能保证是“恒定时间”(在安全攻击中不能利用运行时间差异的意义上;例如,以某种方式可以恢复随机种子)。

关于c++ - 我们如何使 std::uniform_int_distribution 密码安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58661163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com