脚本宝典收集整理的这篇文章主要介绍了php – 从整数生成伪随机6字符串,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
字符范围是:
>大写A-Z,不包括:B,I,O,S和Z.
> 0-9不包括:0,1,2,5,8
如果我没有弄错的话,这将是总共26个字符.我的第一个想法是从编号7962624开始从基数10编码到基数24.所以7962624种子,然后base24编码该数字.
这给了我0-N字符.如果我以下列方式替换结果字符串,那么我符合第一个标准:
B=P,I=Q,0=R,1=T,2=U,5=V,8=W
1=TRRRR,2=TRRRT,3=TRRRU
所以我向你问到的问题是:我如何创建一个行为一致的方法(所以给定整数的返回字符串总是相同的)并满足上面的2个要求?我现在花了整整2天的时间,没有将700,000,000个代码转储到数据库中并随机检索它们我完全没有想法.
斯蒂芬
下面是一个示例:使用6个字符可以生成266 = 308915776个唯一字符串,因此合适的素数可以是308915753.因此,此函数将生成超过300.000.000个唯一代码:
function encode($num) { $scrambled = (240049382*$num + 37043083) % 308915753; return base_convert($scrambled,10,26); }
确保你在64位PHP上运行它,否则乘法会溢出.在32位你必须使用bcmath.为数字1到9生成的代码是:
n89a2d hdh4jo biopb9 5o6k2k 3eek5 k8m9aj ee4424 8jbojf 2ojjb0
剩下的就是填写有时会丢失的初始0,并替换字母和数字,以便不生成任何禁用字符.
正如你所看到的,没有明显的模式,但是有些时间在他们手上,有足够的动力并且能够访问这些代码的人将能够找出正在发生的事情.更安全的替代方案是使用具有小块大小的加密算法,例如Skip32.
以上是脚本宝典为你收集整理的php – 从整数生成伪随机6字符串全部内容,希望文章能够帮你解决php – 从整数生成伪随机6字符串所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。