srand是加密垫的可靠来源吗?
我希望加密音频软件插件上的许可证密钥。许可证密钥完整性的最大风险是小型破解者反编译代码并寻找加密密钥。我的解决方案是在代码中存储任意数字并将其提供给一种算法,该算法将混淆加密密钥,同时仍然允许我在项目之间区分密钥(我是自由职业者)。
我的问题是 - 每次播种 C++ 随机数生成器都会创建相同的伪随机加密密钥,还是在运行、库等之间会有所不同。如果它在操作系统之间有所不同,那很好,我只需要它在同一台计算机上的 SDK 和托管软件之间没有区别。
回答
srand 和 rand当您使用相同的实现时将产生相同的数字序列。更改编译器,即使是同一编译器的更新版本,也无法保证,
但是在 C++11 中引入并在 中定义的新随机数生成器<random>要求在所有实现中生成相同的数字序列。