标准JavaScript Object哈希表实现中可能发生冲突?

时间:2018-05-26 09:19:35

标签: javascript algorithm properties time-complexity hash-function

我最近碰巧考虑了JavaScript中的对象属性访问时间并遇到了this question,这似乎合理地暗示它应该是恒定的时间。这也让我想知道是否有a limit on object property key lengths。显然,现代浏览器支持高达2 ^ 30的密钥长度,这似乎对哈希函数非常有用。那就是说,

  • 是否有人知道JS使用的散列函数的种类 引擎?

  • 是否可以通过实验创建JavaScript的冲突 财产访问者?

1 个答案:

答案 0 :(得分:3)

  

有人知道JS引擎使用的散列函数的种类吗?

是的,他们的开发人员当然知道哈希函数及其存在的问题。实际上,attacks based on hash collisions在2011年针对各种语言进行了演示,其中包括作为DOS攻击的node.js服务器。

v8团队解决了这个问题,您可以在https://v8project.blogspot.de/2017/08/about-that-hash-flooding-vulnerability.html了解详细信息。

  

是否可以通过实验创建JavaScript的属性访问器冲突?

看起来如此:https://github.com/hastebrot/V8-Hash-Collision-Generator