我的页面上有一个 textarea 元素,单击我创建的保存按钮后,它的内容将保存到我的数据库中。我想使用表行的唯一 id(主键)创建带有哈希 id 的短网址,如“MySite.com/laHquq”,我在该表行中保存了包含文本区域中的信息的记录:http://www.hashids.org/这将“从数字生成短哈希值(例如 YouTube 和 Bitly)”。我想用它来混淆表行的唯一主键与包含文本区域信息的记录。
我将有一个脚本将创建的哈希 ID(这会混淆主键)放置在地址栏中域名末尾的正斜杠之后,这样地址栏现在将显示:“MySite. com/laHquq”信息保存到我的数据库后。这样做只是为了表明现在可以通过访问具有正斜杠后的哈希 ID 的站点来再次看到保存在文本区域中的信息。
我还将有一个带有自调用函数的脚本,该脚本将在每次页面加载时从地址栏获取 url,并检查正斜杠后的哈希 ID,然后使用哈希 ID 从db 显示在页面的文本区域中。我想知道是否使用 hashids:http://www.hashids.org/将有助于防止哈希冲突。
最佳答案
从文档看来,您永远不会遇到与 hashid 的冲突。那是因为它不是哈希。这是一种密码——一种加密算法。虽然确实很弱,但足以生成看起来像散列的 id。
一个关键线索是有一个解密
函数。真正的哈希值(可能发生冲突)无法解密为单个值,因为有多个值(通常是无限的)生成相同的哈希值。
在某些方面,它与 base64 编码类似,但选择了 URL 友好的字符集(没有 +
或 /
)。
关于javascript - 我是否可以使用此解决方案避免哈希冲突?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19018675/