我正在尝试使用 OpenSSL 编写自定义 RSA 密钥对生成算法。我使用该PKCS5_PBKDF2_HMAC_SHA1函数生成 PRNG 种子,因此,我使用该种子作为 RAND_seed 输入。
不幸的是,每次我使用RAND_bytes相同的种子调用 时,我都会获得不同的随机数,但这不是预期的行为,因为正如如何从短密码中安全地生成非对称密钥对?随机数生成器是确定性的(相同的种子相同的输出)。
下面是测试用例。我也声明了恒定的种子,但生成从来都不是确定性的。
unsigned int seed = 0x00beef00;
unsigned int rnum[5];
RAND_seed(&seed, sizeof(seed));
RAND_bytes((unsigned char *)&rnum[0], sizeof(rnum));
Run Code Online (Sandbox Code Playgroud)
错误在哪里?