现在有一个生成优惠码的需求,产品要求长度压缩到4位,开发环境是nodejs + mysql,有什么好的方案可以保证每次生成的4位随机码跟之前的都不重复呢?
现在有一个生成优惠码的需求,产品要求长度压缩到4位,开发环境是nodejs + mysql,有什么好的方案可以保证每次生成的4位随机码跟之前的都不重复呢?
只为交差的话,随机取个数字开始递增或者递减,然后建个字典替换字符,额……就是扛不住风险,有心一眼能看出来。
想提高安全性的话,可以切换步数。比如(原始码)上个1111,下个1113,下下个1120。
还想安全点(也不嫌麻烦)的话,就用双轨的步数切换吧。比如上个1111,到了1120,跳到2111,到了2120,跳回去1121。当然不止双轨,三轨四轨也可以——这是这样没必要,真想要安全性,就老实点用正经的对称加密算法吧。
13 回答12.9k 阅读
7 回答2.1k 阅读
3 回答2.6k 阅读✓ 已解决
3 回答1.3k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答942 阅读✓ 已解决
6 回答1.1k 阅读
直观的想法是通过10个数字(0-9) + 26个小写字母(a-z)排列组合实现,也就是可以有36的4次幂 = 1679616种组合,完全可以满足一个小型项目的需求。如果项目比较大,完全可以通过加入其他项(比如特殊字符、大写字母等等)到可择列表实现,最终还可以提升邀请码位数进一步扩展。
实现步骤:
缺点:
欢迎大家提出高效思路,不足之处请指出。