【发布时间】:2017-11-10 14:27:01
【问题描述】:
我需要将一些软件移植到只有标准 ANSI C 运行时和一些 POSIX 函数的平台。该软件通过读取/dev/urandom 为密码加密ZIP 文件生成随机数。在 Windows 上,软件使用CryptGenRandom() 生成随机数。由于这两个功能在我的目标平台上都不可用,我必须找到替代方案。
我想出这个来用length 随机字节填充buffer:
bool zip_random(zip_uint8_t *buffer, zip_uint16_t length)
{
srand(time(NULL));
while(length--) *buffer++ = rand() % 256;
return true;
}
这可以完成工作,但由于该函数用于加密上下文,我不知道使用旧的 srand 和 rand 函数是否是个好主意。这就是为什么我想问我的方法是否可以接受,或者是否有更好的解决方案。
【问题讨论】:
标签: c random cryptography