假设我要设计一个邀请码,需要满足:一个函数 f,和检验函数 g,使得 g(f(id)) 得到的内容均返回 true,其它均返回 false,且对于 i=j,f(i)=f(j)。
现在有一些问题:
我需要保证邀请码系统是安全的,也即无论获得了多少个由我给出的 f(id),均不能破解出函数 f。
1.如果我不公布 f,g 的具体实现,能否设计出函数使得满足上述要求?
2.如果我需要公布 f,g 的具体实现,但是我可以自选参数 i(参数不公布,可以有多个)来实现本函数,能否设计出函数满足上述要求?
容易发现 fi,p(id)=id×p+i(其中 p 为大质数,i 为随机选择的数)可能可以满足上述的 1 和 2 问题。
现在如果限定了邀请码是 128bit 的,能否构造出一个函数使得在少于一定的 id 下能有尽量多的邀请码,并且尽量使得邀请码“均匀”。(如若使用上述生成方式则可能在 128bit 的前端会有很多 0)