Vik*_*ehr 4 c++ hash std string-view c++17
似乎C++ 17 string_view 的std :: hash函数不是constexpr.
在我看来,绑定到const char []的字符串视图可以在编译时进行散列(这将是非常甜蜜的),或者有什么可以防止这种情况?
从C++ 14开始(参见17.6.3.4哈希要求,表26),我们得到:
返回的值仅取决于程序持续时间的参数k.[注意:因此,对于给定的程序执行,对具有相同k值的表达式h(k)的所有求值产生相同的结果. - 结束说明]
哈希函数只需要在一次执行程序时为同一输入产生相同的结果; 这允许盐渍哈希防止碰撞DoS攻击.
以下是关于HashC++ 17标准中概念要求的措辞:
返回的值仅取决于程序持续时间的参数k.[注意:因此,对于给定的程序执行,对具有相同k值的表达式h(k)的所有求值产生相同的结果. - 结束说明]
它没有明确说明任何有关随机散列的内容.该std::hash文本不强制要求,也不排除随机散列.
这是N3242 2011-02-28草案,没有提到"在计划期间":
不要抛出异常.返回的值应取决于参数k.[注意:因此,对于具有相同k值的表达式h(k)的所有评估产生相同的结果. - 结束说明
我们可以看到,"对于给定的程序执行","为程序的持续时间"添加了" 2291. std :: hash易受碰撞DoS攻击 "的解决方案.
AFAIU,没有实现std::hash随机哈希的实现,但你可以编写自己的哈希my::secure_hash.