如何改进代码以生成安全的随机数
how can I improve my code to generate secure random numbers?
我试图找到生成安全随机数的最佳方法或库,例如Python中的secrets
。
我正在使用CodeBlocks在Windows 10上工作。到目前为止,我已经这样做了:
#include <cstdlib>
#include <ctime>
#include <iostream>
using namespace std;
int main()
{
srand((unsigned)time(0));
int i;
i = (rand()%6)+1;
cout << i << "n";
}
我正在尝试复制与Python的secrets
相同的功能,以生成安全的随机数。
std::rand()
没有提供足够的保证,用于用于加密应用程序(又称安全随机数):
没有保证随机序列的质量 生产。过去,兰德()的某些实施情况很认真 随机性,分布和周期的缺点 产生的序列(在一个众所周知的示例中,低阶位简单 在呼叫之间的1到0之间交替)。
您可以使用<random>
库获得更高质量的随机生成。但是,同样,使用的发电机,例如Mersene Twister不足以用于加密使用。
因此,您最好选择诸如OpenSSL之类的专业库。
另外,给定平台选择,您可以使用CryptGenRandom()
或更好的BCryptGenRandom()
。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 为什么随机数生成器不在void函数中随机化数字,而在main函数中随机化
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 整数不会重复超过随机数
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- 如何将元素添加到数组的线程安全函数?
- C++中的线程安全删除
- 通过网络、跨平台传递std::变体是否安全
- 在std::thread中,joinable()然后join()线程安全吗
- 使用std::istream::peek()总是安全的吗
- if数组上的随机数
- 从值小于256的uint16到uint8的Endian安全转换
- C++ 生成线程安全随机数
- GSL+OMP:C++中的线程安全随机数生成器
- 如何改进代码以生成安全的随机数
- Qt/C++(跨平台)中加密安全的伪随机数生成器
- 线程安全随机数
- C++是线程安全的伪随机数生成器
- 在Intel TBB函数对象中生成线程安全随机数(相同种子/不同种子)