这Python doc人说:
默认情况下,str and bytes个对象的
__hash__()
个值将使用不可预测的随机值进行"加盐".尽管它们在单独的Python进程中保持不变,但在重复调用Python之间是不可预测的. 这旨在提供保护,防止由精心 Select 的输入引起的拒绝服务,这些输入利用了字典插入的最坏情况性能,O(n2)
复杂性.
但the algorithm used for computing hash()%的数字是确定性的.(它只对字符串和字节使用SALT).出于同样的原因,为什么攻击者不能使用整数来运行DoS?