用户友好且难以猜测的唯一标识符

2024-01-24

我的团队正在开发一个具有旧数据库的应用程序,该数据库使用两个不同的值作为 Group 对象的唯一标识符:Id是一个自动递增的 Identity 列,其值由插入时的数据库确定。GroupCode由应用程序决定after插入,并且是"Group" + theGroup.Id.

我们需要的是一种生成 GroupCode 的算法:

  1. 都是独一无二的。
  2. 用户相当容易正确输入。
  3. 黑客很难猜测。
  4. 要么由数据库在插入时创建,要么由应用程序在插入之前创建(即不依赖于标识列)。

现有的解决方案满足前两个标准,但不满足后两个标准。有谁知道满足上述所有标准的好解决方案?

还有一点需要注意:尽管此代码由用户在外部使用,并且尽管 Id 可以为其他表提供更好的标识符以将其外键链接到,但其他表仍使用 GroupCode 来引用特定的组。

提前致谢。


是否可以添加新列?它可以由身份和随机 32 位数字组成。

然后,该 64 位数字可以转换为“可记忆的随机字符串”。从安全角度来说,这不是完美的,但已经足够好了。

这是一个使用 Ruby 的示例是武竹 http://shorl.com/koremutake gem http://koremutake.rubyforge.org/.

require 'koremu'
# http://pastie.org/96316 adds Array.chunk
identity=104711
r=rand(2**32)<<32 # in this example 5946631977955229696
ka = KoremuFixnum.new(r+identity).to_ka.chunk(3)
ka.each {|arr| print KoremuArray.new(arr).to_ks + " "}

Result:

图萨达·雷格鲁米·勒巴德

还请查看语音记忆密码生成算法 https://stackoverflow.com/questions/624425/phonetically-memorable-password-generation-algorithms.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用户友好且难以猜测的唯一标识符 的相关文章

  • bash: export: not a valid identifier

    export 后面存在空格 xff0c 去掉即可
  • Error C2065 'cout': undeclared identifier

    1 问题背景 C 43 43 MFC中出现 Error C2065错误 xff0c 即未定义xxx错误 xff0c 而你使用的xxx是基础类库的 xff0c 你心里想不可能不存在呀 当然排除你拼写错误的情况 xff0c 咱不讨论这种情况 2
  • 对象名称前的单下划线和双下划线的含义是什么?

    Python 中对象名称前的单下划线和双下划线代表什么 单下划线 在类中 带有前导下划线的名称向其他程序员表明该属性或方法旨在在该类内部使用 然而 隐私并不enforced以任何方式 在模块中的函数中使用前导下划线表示不应从其他地方导入它
  • JSF生成的HTML元素ID是变化的,如何将其设置为固定的元素ID?

    我有一个 JSF 输入文本组件 其 id 为search 在生成的 HTML 输出中 它看起来像这样j idt17 search 但是数量17正在不时发生变化 怎样才能让它保持一成不变呢 给生成 HTML 元素的 JSF 组件id j id
  • REST 数字或字符串资源标识符?

    我正在做一些研究来帮助我开发 REST API 这是我在任何地方都没有看到过深入讨论的主题 如果系统中有用户 使用数字标识符来识别用户是否更好 users 1 或者使用字符串标识符 用户 RSmith 我可以看到每种方法的假设潜在优点和缺点
  • quote_ident() 不会向列名“first”添加引号

    我需要获得正确用双引号引起来的列名 quote ident 好像没有做到吧 select 1 first fails select quote ident first produces first not first 我可以使用什么命令来成
  • 生成_id即可。 MongoDB 中的 ObjectId 自动生成

    我正在开发一个创建永久链接的应用程序 我不知道如何将文档保存在 MondoDB 中 两种策略 ObjectId 自动生成 MongoDB 自动生成 id 我需要创建一个索引permalink字段 因为我通过永久链接获取信息 我还可以使用以下
  • Azure CosmosDB:文档 ID 中存在非法字符

    我遇到的问题是 基于某些输入生成的 ID 包含字符 这会导致更新插入操作期间出现错误 因为文档 ID 中不允许使用 除此之外还有哪些字符是不允许的 遇到这样的情况有什么方法可以处理呢 非法字符是 see https learn micros
  • Hi/Lo 算法是什么?

    Hi Lo 算法是什么 我在中找到了这个NHibernate http en wikipedia org wiki NHibernate文档 这是生成唯一密钥的一种方法 第 5 1 4 2 节 但我还没有找到对其工作原理的很好的解释 我知道
  • C++ 构造函数中前导下划线的含义是什么?

    好吧 我不是一个非常有经验的 C 程序员 但我想知道以下构造函数的参数中下划线的意义是什么 class floatCoords public floatCoords float x float y float width float hei
  • C++ 中静态全局标识符和非静态全局标识符有什么区别?

    有什么区别static全球和非staticC 中的全局标识符 静态将变量的范围限制为相同翻译单位 https stackoverflow com questions 1106149 what is a translation unit in
  • 使用 jQuery 选择带有冒号的 ID

    我正在为一个网站开发一个预先编写的模块 我需要使用 id 来定位一个元素test two 现在 这个元素中有一个冒号 因此 jQuery 可以理解地将 two 视为伪类 有没有办法用 jQuery 来定位这个元素 另外 无法更改 ID 相信
  • 非 ASCII Python 标识符和反射率 [重复]

    这个问题在这里已经有答案了 我从中学到了PEP 3131 https www python org dev peps pep 3131 Python 支持非 ASCII 标识符 尽管它不被认为是最佳实践 然而 我得到了这种奇怪的行为 我的
  • 在 F# 中使用关键字作为标识符

    在 C 中 我可以执行以下操作 int private 15 在 VB NET 中 我可以执行以下操作 Dim Private As Integer 15 我想知道 F 中是否有办法使用保留关键字作为标识符 就像 VB NET 和 C 中那
  • 删除数组中第一级标识符[重复]

    这个问题在这里已经有答案了 我认为这个问题以前已经出现过 但找不到任何答案 如果已经回答 请通过链接为我指出正确的方向 我有一个数组 我不想删除第一级标识符 我想有一个函数可以实现这个功能吗 它是如何的示例 0 gt Array 8 gt
  • PostgreSQL 列名区分大小写吗?

    我有一个数据库表 persons在另一个团队传下来的 Postgres 中 有一个列名 first Name 现在我尝试使用 PG Commander 来查询这个表的这个列名 select from persons where first
  • 提升精神带走关键字并忽略船长

    这是使用表达式的语法的一小部分 prefix lit L not gt gt prefix lit gt gt prefix postfix 我在 postfix 内部有某种方式纯名称获取标识符 name pure lexeme boost
  • g++ 变量名有长度限制吗?

    看标题 简短回答 No 长答案 是的 它必须足够小才能适合内存 但否则就不行 不是真的 如果有一个内置的限制 我不相信有 那么它太大了 你真的很难达到它 事实上 你让我很好奇 所以我创建了以下 Python 程序来生成代码 usr bin
  • 什么构成“有效”C 标识符?

    根据 Zaibis 的建议 并且与我自己的相关 answer to 宏名称的有效字符是什么 https stackoverflow com a 34315237 547214 也g 不允许的标识符中的 和其他 Unicode 字符 http
  • C++11 是否允许在标识符中使用美元符号?

    C 03 中的标识符中允许使用美元符号吗 https stackoverflow com questions 936744 are dollar signs allowed in identifiers in c03涵盖了 C 03 中不允

随机推荐