我想实现一个类似于Imgur的保存系统,如果用户按下按钮,则返回唯一的 5 个字符值。这是我到目前为止所拥有的:
数据库后端使用从 开始的自动递增 ID 5308416
。我使用修改后的 Radix 函数(见下文)将这些数字 ID 转换为字符。我使用反向函数将字符 ID 查找回数字数据库 ID。
function genID (value)
{
var alphabet = "23456789BCDFGHJKLMNPRSTVWXYZbcdfghjkmnpqrstvwxyz";
var result = "";
var length = alphabet.length;
while (value > 0)
{
result = alphabet[value % length] + result;
value = Math.floor (value / length);
}
return result;
}
问题是这些生成的 ID 是非常可预测的。我的问题是,如何使生成的 ID 看起来是随机的但仍然是唯一的(所以我可以在数据库中将它们作为数字查找)。我正在考虑使用一些加密算法,但不知道从哪里开始。任何帮助或建议将不胜感激(也许还有更好的方法)。