我正在尝试生成与 bit.ly url 样式相同的 UUID,例如:
http://bit [dot] ly/aUekJP
或 cloudapp 的:
http://cl [dot] ly/1hVU
甚至更小
我该怎么做?
我现在正在为 ruby 使用 UUID gem,但我不确定是否可以限制长度并得到类似的东西。
我目前正在使用这个:
UUID.generate.split("-")[0] => b9386070
但我想要更小的,并且知道它将是独一无二的。
任何帮助将非常感激:)
编辑说明:用点字母替换[dot]
的解决方法禁止短链接 https://meta.stackoverflow.com/questions/313621/blacklist-the-use-of-common-link-shorteners-in-posts
您在这里混淆了两种不同的事物。 UUID 是通用唯一标识符。即使世界各地同时创建了数百万个,它也很有可能是独一无二的。它通常显示为 36 位数字的字符串。您不能砍掉前 8 个字符并期望它是唯一的。
Bitly、tinyurl 等人存储链接并生成一个短代码来表示该链接。他们不会根据在数据存储中查找的代码重建 URL 并返回相应的 URL。这些不是 UUID。
在不了解您的应用程序的情况下,很难建议您应该使用哪种方法,但是您可以使用数字键将您指向的任何内容存储在数据存储中,然后使用 10 个数字和 22 个小写字母将密钥重新设置为 base32,也许可以避免明显的拼写错误问题,例如“o”“i”“l”等
EDIT
经过进一步调查,有一个 RubyBase32 宝石 http://github.com/levinalex/base32可以实现 Douglas Crockford 的Base 32 实施 http://www.crockford.com/wrmg/base32.html
5 个字符的 Base32 字符串可以表示超过 3300 万个整数,而 6 位数字的字符串可以表示超过 10 亿个整数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)