我的团队正在开发一个具有旧数据库的应用程序,该数据库使用两个不同的值作为 Group 对象的唯一标识符:Id
是一个自动递增的 Identity 列,其值由插入时的数据库确定。GroupCode
由应用程序决定after插入,并且是"Group" + theGroup.Id
.
我们需要的是一种生成 GroupCode 的算法:
- 都是独一无二的。
- 用户相当容易正确输入。
- 黑客很难猜测。
- 要么由数据库在插入时创建,要么由应用程序在插入之前创建(即不依赖于标识列)。
现有的解决方案满足前两个标准,但不满足后两个标准。有谁知道满足上述所有标准的好解决方案?
还有一点需要注意:尽管此代码由用户在外部使用,并且尽管 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(使用前将#替换为@)