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

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 去掉即可
  • 【C++】error C2065: ‘vector‘ : undeclared identifier

    问题 xff1a 使用vector时报错 xff1a error C2065 39 vector 39 undeclared identifier 解决 xff1a 使用Vector 不仅需要加头文件 include lt vector g
  • not a valid identifier解决

    not a valid identifier不是有效的标识符 因为在 usr的 多加了一个空格 xff0c 导致JAVA Home 无法识别 转载于 https www cnblogs com wxd136 p 10332040 html
  • Python变量是指针吗?或者说,它们是什么?

    据我所知 Python 中的变量只是指针 根据这条规则 我可以假设此代码片段的结果 i 5 j i j 3 print i 将会3 但我得到了一个令我意想不到的结果 那就是5 此外 我的 Python 书确实介绍了这个示例 i 1 2 3
  • JavaScript 中的有效属性名称、属性分配和访问

    更新的问题 到底什么才是 Javascript 中有效的属性名称 各种财产分配方式有何不同 属性名称如何影响属性访问 Note 我最初问题的答案 见下文 有助于澄清一些事情 但也带来了新的麻烦 现在我有机会更加熟悉 JavaScript 我
  • REST 数字或字符串资源标识符?

    我正在做一些研究来帮助我开发 REST API 这是我在任何地方都没有看到过深入讨论的主题 如果系统中有用户 使用数字标识符来识别用户是否更好 users 1 或者使用字符串标识符 用户 RSmith 我可以看到每种方法的假设潜在优点和缺点
  • Python 中的 Unicode 标识符?

    我想构建一个Python函数来计算 并想将我的求和函数命名为 以类似的方式 想使用 表示乘积 等等 我想知道是否有办法以这种方式命名 python 函数 def 也就是说 Python 是否支持 unicode 标识符 如果支持 有人可以提
  • Android:R.java:预期错误

    我是 android 开发的初学者 正在遵循developer android com 上的培训指南 更好的教程也将不胜感激 当我开始收到此错误时 我正在添加操作栏 Executing tasks app assembleDebug Con
  • Azure CosmosDB:文档 ID 中存在非法字符

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

    我在互联网上找到了这段代码片段 digits 0 0 digits n digits n where digits 0 ds ds digits n ds let q r quotRem n 10 in digits q r ds sumO
  • Hi/Lo 算法是什么?

    Hi Lo 算法是什么 我在中找到了这个NHibernate http en wikipedia org wiki NHibernate文档 这是生成唯一密钥的一种方法 第 5 1 4 2 节 但我还没有找到对其工作原理的很好的解释 我知道
  • 在Java编译器中,哪种类型可以定义为标识符(ID)或关键字(保留字)?

    我有一个简单的问题 在Java编译器中 哪些类型的方法或变量可以被定义为标识符 ID 或关键字 保留字 对于以下示例 ID 应为 add main a b c Test1 关于什么print is printID 或关键字 Example
  • 标签中的最大字符数(表名、列等)

    希望这个问题之前没有被问过 有谁知道域名的字符数限制吗 例如 如果我这样写 CREATE DOMAIN d complement activite etablissement AS character varying 它将创建一个名为的域
  • 用户友好且难以猜测的唯一标识符

    我的团队正在开发一个具有旧数据库的应用程序 该数据库使用两个不同的值作为 Group 对象的唯一标识符 Id是一个自动递增的 Identity 列 其值由插入时的数据库确定 GroupCode由应用程序决定after插入 并且是 Group
  • 如何高效识别二进制文件

    识别二进制文件最有效的方法是什么 我想从二进制文件中提取某种签名 并用它与其他文件进行比较 暴力方法是使用整个文件作为签名 这将花费太长的时间和太多的内存 我正在寻找一种更聪明的方法来解决这个问题 并且我愿意为了性能而牺牲一点准确性 但不是
  • C++ 构造函数中前导下划线的含义是什么?

    好吧 我不是一个非常有经验的 C 程序员 但我想知道以下构造函数的参数中下划线的意义是什么 class floatCoords public floatCoords float x float y float width float hei
  • 在 F# 中使用关键字作为标识符

    在 C 中 我可以执行以下操作 int private 15 在 VB NET 中 我可以执行以下操作 Dim Private As Integer 15 我想知道 F 中是否有办法使用保留关键字作为标识符 就像 VB NET 和 C 中那
  • 变量名中的美元符号

    我偶然发现了一些像这样的 C 代码 int T S 首先我以为这是某种PHP https en wikipedia org wiki PHP代码或错误粘贴在那里的东西 但它可以很好地编译和运行 在2008年MSVC https en wik
  • 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

随机推荐