javascript - 我是否可以使用此解决方案避免哈希冲突?

标签 javascript html

我的页面上有一个 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/

相关文章:

html - 如果特定字符串,Rails 或 CSS 替换表格单元格内容?

javascript - 参数是否会使 JavaScript GC 无法收集对象?

javascript - 对多个 View 使用 angular-tour 会产生意想不到的结果

javascript - Dygraph 不对称误差线

javascript - 如何在显示 ng-repeat 元素时应用延迟

html - Google 字体(上面有一个空格)无法在 IE7/IE8 上呈现

JavaScript if 语句比较不起作用

javascript - 弹出键盘时向上滚动文本字段

javascript - html5中 Sprite 图像的x-y坐标和宽度-高度

javascript - 如何在 twitter-bootstrap 流体布局中创建多个可滚动部分