登录|立即注册
论坛首页 > 加密解密
发帖|
看143|回0|收藏
admin 看全部
2021-9-10 20:08:27
如果在弱安全场景相关的算法中自己实现了PRNG,请确保rand出来的随机数不会很小或可预测。

代码:

  1. // Bad
  2. int32_t val = ((state[0] * 1103515245U) + 12345U) & 999999;

上述例子可能想生成0~999999共100万种可能的随机数,但是999999的二进制是11110100001000111111,与&运算后,0位一直是0,所以生成出的范围明显会小于100万种。

代码:

  1. // Good
  2. int32_t val = ((state[0] * 1103515245U) + 12345U) % 1000000;

代码:

  1. // Good
  2. int32_t val = ((state[0] * 1103515245U) + 12345U) & 0x7fffffff;


关联漏洞:

代码:

  1.   高风险-逻辑漏洞

阅镜

Powered by Discuz! X3.4

首页|简易版|触屏版|电脑版