从名字和姓氏生成简短的唯一人类可读 ID 的算法
algorithm to generate short unique human readable id from first and last name
寻找一种算法,当给定名字和姓氏时,会生成一个id,使其由纯字母数字字符组成。 另外,我希望它尽可能短,同时保持独特性。 我希望大约有 10-12 个字符——人类可以输入的东西。
我已经读过关于计算哈希的建议,然后简单地取前 n 个字节并用 36 调用模数(这个想法是你有一个从 0-35 到字母 a-z 0-9 的映射)。
还听到了可能截断并使用更高基数将更多位打包到 id 中的建议。
我想我可以将生成时间的一些编码附加到生成的 id 中以使其唯一,但我再次需要一种方法来缩短它。
你有什么意见? 我应该选择特定的哈希算法/截断方法吗? 我将在javascript中实现它,作为用作本地Web应用程序的静态html页面的一部分。
我只是担心加密货币很难,我欢迎任何认为自己知道自己在做什么的人的建议。
如果它有帮助,我希望制作的 id 数量很少 - 大约 4 位。
一种技术是只使用名字和姓氏的组合,类似于大公司创建电子邮件别名的方式。 如果您只创建几千个,那么解决碰撞并不难。 这些可能是最人性化的ID类型。例如,比尔史密斯会billsm
或类似的东西。
被猜到(尽管如果猜测一个id破坏了你的安全模型,你可能应该研究一下),那么你可以使用下面这样的东西(未经测试的javascript伪代码):
var sequence = 1,
shardId = 1,
epoch = 1357027200000;
function nextId() {
sequence = sequence + 1;
now = Date.now() - epoch;
seqId = sequence % 1023
nextId = now << 15 | shardId << 10 | seqId;
return (nextId).toString(36);
}
相关文章:
- 使用onkeyup JS事件检查输入的值是否唯一
- 当同一浏览器的两个实例浏览时,Javascript页面如何具有唯一的ID
- Lodash映射并返回唯一
- 在数据库中循环值时,为输入框获取唯一值
- 如何从数组中查找唯一对象
- 正在为循环创建唯一id
- 获取唯一值并使用javascript计算金额总和
- JavaScript:从对象数组中获取唯一值及其计数
- ng重复中的ng模型-初始化唯一作用域属性
- 生成唯一的ids js
- 创建具有2个唯一数字的Javascript数组
- 对中的函数调用进行排序是回调的唯一方法
- 如何在传单.js中显示每个choropleth弹出窗口的唯一名称和URL
- 在JavaScript中创建全局唯一ID
- 为dropdownlistfor(MVC)中的每个元素设置唯一id
- JavaScript-用唯一属性标识对象
- 动态创建唯一的复选框
- 如何为动态创建的元素分配唯一的id-Javascript
- Meteor针对唯一客户端集合的发布/订阅策略
- 从名字和姓氏生成简短的唯一人类可读 ID 的算法