目前在做一个招标网站,每个标的都是有开始时间与结束时间,只要用户在这个时间段下单即可。 领导要求每个标的的结束时间需要随机提前几百毫秒结束,这个随机过程可以通过标的基础信息推算出来,并且要一般人反推不出来。 我能想到的基础信息包括:标的编号、开始时间、结束时间、标的物金额、标的物数量(一个标的对应多个标的物,多个标的物是一样的)。 小弟才疏学浅,想请教各位大神,如果是您您会怎么做这个随机算法。
1
7zlid 2022-08-13 20:35:44 +08:00 via Android
把你说的那几个变量加盐取 hash
前三位转十进制除以 4 |
2
xiangyuecn 2022-08-13 20:36:51 +08:00
花里胡哨,直接加一个字段,多存一个结束随机时间🐶 真随机 一点都不作假🐶🐶🐶
|
3
learningman 2022-08-13 20:37:16 +08:00 via Android
直接生成随机数不行吗
|
4
kongkx 2022-08-13 20:39:52 +08:00 via iPhone
hash + 取模? 这个随机数有这么讲究吗?
|
5
Jooooooooo 2022-08-13 20:49:40 +08:00
直接用你计算时的当前的毫秒时间就行, 这个足够随机.
|
6
wyx119911 2022-08-13 22:24:37 +08:00
直接用“标的编号”做下 hash ,再取模到 100 - 900 的范围
|
7
superrichman 2022-08-13 22:29:26 +08:00
这简单,提前 1 秒结束就行。因为还有网络延迟,把延迟考虑进来,到你的服务器上就是随机的几百毫秒了 /doge
|
8
Slurp 2022-08-13 22:39:57 +08:00
hash + 取模。比如 id * 114514 + (end * 5147 - start * 305) + price * 191981 + count * 47297 再 + 100 再 % 721 。跑了点随机数据出来 max 820 min 100 avg 460. 并且数据少的话,波动很大。
|
9
qwertyegg 2022-08-14 03:13:10 +08:00
任意的 trapdoor 函数都没法反推
稍微改一下就实现你功能了 |
10
kevin1 2022-08-14 12:01:46 +08:00
> 这个随机过程可以通过标的基础信息推算出来
能推算出来的就不叫随机了。 多取几个字短按照某种规则计算几次就行了吧,反推的难度应该会很高。 |
11
whyhowwhat 2022-08-14 14:01:18 +08:00 via iPhone
找个单向加密算法,随机只是伪需求
|