微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

mysql – 生成唯一的跟踪号

我正在构建一个小型rails应用程序,我需要一种方法生成跟踪号码,以便客户检查他们的状态.我想要一些类似于主要航运公司使用的东西,但不是那么久.我认为12-16个字符很长很好,但我不想要0000000001这样的东西,人们可以只输入递增的数字并窥视.

生成唯一数字/字母组合跟踪代码的好方法是什么?

解决方法:

对于无意义的数据,时间加上盐的哈希总是坚如磐石,并且不能轻易猜到(原谅Python,我听说过这个Ruby的东西,但从来没有把它拿在手里):

>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()
'7a8b73fa7e0dadf246612e6001ede165'

缩短它,如果你喜欢:

>>> hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:16]
'46ffb69ebc96412d'

如果您愿意,请使用整数,但长度有可能随此代码而变化,除非您使用零填充:

>>> int(hashlib.md5(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1346212029197308

在“zomg md5不加密安全”之前:

>>> int(hashlib.sha256(str(time.time()) + "!salt!").hexdigest()[:13], 16)
1948411134966366

地狱,你甚至不必使用时间,你可以使用自动增量整数,只要你加盐:

>>> int(hashlib.sha256(str(1) + "!salt!").hexdigest()[:13], 16)
1269883740611281
>>> int(hashlib.sha256(str(2) + "!salt!").hexdigest()[:13], 16)
3655373802716929

哈希值.他们有什么不能做的吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐