标签: hash-collision

短字符串的哈希码可以相同吗?

我有短Strings(少于10个字符).我将其转换为int并将其用作主键.(由于小问题,我不能使用String主键.)我知道无限长度的字符串的哈希码可以冲突,但是短字符串也可以冲突吗?

java string hashcode hash-collision

4
推荐指数
2
解决办法
750
查看次数

HashMap碰撞是否会导致调整大小?

在放入HashMap期间发生冲突时,地图是否已调整大小,或者是添加到该特定存储桶中的列表的条目?

java hashmap hash-collision

3
推荐指数
1
解决办法
6799
查看次数

如何发现相同的文件而不将它们相互比较?

我正在建立一个用户可以上传内容的网站.一如既往,我的目标是世界优势,所以我想避免两次存储相同的文件.例如,如果用户尝试两次上传相同的文件(通过重命名或仅仅忘记她过去所做的事情).

我目前的方法是让跟踪每个上传文件的数据库存储有关每个文件的以下信息:

  • 文件大小(字节)
  • MD5文件内容的总和
  • SHA1文件内容的总和

然后是这三列的唯一索引.使用两个哈希值可以最大限度地降低误报的风险.

所以,我的问题是:两个相同大小的不同("真实世界")文件具有相同的MD5 SHA1哈希值的概率是多少?

或者:是否存在类似(非)复杂性的更智能方法?

(我知道概率可能取决于文件大小).

谢谢!

statistics comparison file unique hash-collision

3
推荐指数
1
解决办法
2853
查看次数

加密算法的抗冲突性如何?

对于在明文/密钥对上工作的给定(对称或非对称)加密算法生成的给定密文,找到产生相同密文的不同明文/密钥对有多难?

两个明文/密钥对导致相同的密文有多难?

导致这个问题的是另一个可能与上述问题无关的问题:

如果您有密文和密钥并希望使用某些解密例程对其进行解密,则例程通常会告诉您密钥是否正确.但它怎么知道呢?它是否在结果明文中寻找某种模式,表明解密是成功的?在一些不同的明文中是否存在另一个关键结果,它包含模式并且还被例程报告为"有效"?

后续问题的灵感来自答案和评论:

如果允许的明文/密钥对限制在以下(或两种)方式中:

1)明文以密钥的KCV(密钥检查值)开始.

2)明文以某些明文/密钥组合的哈希值开始

这会使碰撞发现不可行吗?甚至清楚,这样的明文/密钥存在=

encryption cryptography hash-collision

3
推荐指数
1
解决办法
3961
查看次数

非唯一str的最小碰撞是什么:md5或sha1

我想为给定的字符串创建一个唯一的哈希值,我想知道md5和sha1的重复哈希是否存在差异.

让我们为了论证假设以下代码:

foo = "gdfgkldng"
bar = "fdsfdsf"
md5(foo)
>>>> "25f709d867523ff6958784d399f138d9"
md5(bar)
>>>> "25f709d867523ff6958784d399f138d9"
Run Code Online (Sandbox Code Playgroud)

sha1和md5之间发生这种情况的概率有差异吗?另外:如果我使用具有大重叠的字符串("blabla1","blabla2")是否有区别?

BTW.我对算法的安全性不感兴趣,我只想创建尽可能唯一的哈希.

hash md5 sha1 hash-collision

3
推荐指数
1
解决办法
681
查看次数

是否有更多机会在GUID或GUID的SHA1哈希之间发生冲突?

当两者之间GUID's(128位)或SHA1哈希GUID's(160位)时,是否有更多机会发生冲突?我认为a的可能性较小GUID(即使有少32位),因为它有一些特殊的机制来确保(几乎,因为没有保证)唯一(例如:timestamp)

注意:我已经知道a GUID不太可能与另一个发生碰撞GUID,请不要再讨论这个问题了.

algorithm sha1 guid hash-collision

3
推荐指数
1
解决办法
992
查看次数

如何为数组生成唯一键?

我想根据数组的内容生成唯一标识符.我最初的方法是简单地做:

$key = md5(json_encode($array));
Run Code Online (Sandbox Code Playgroud)

但是,我想绝对确定密钥是唯一的,并且两个不同的数组可能产生相同的md5哈希.目前的想法是:

$key = base64_encode(json_encode($array));
Run Code Online (Sandbox Code Playgroud)

这保证是独一无二的,但产生相当长的钥匙.我可以使用sha512或者这种类型的哈希与md5具有相同的密钥冲突潜力吗?有没有办法生成比base64方法更短的密钥,100%保证是唯一的?

为了100%明确,我的问题是:如何为一组数据生成最短的100%唯一标识符?

php hash-collision

3
推荐指数
1
解决办法
913
查看次数

如何在哈希冲突后检索值

我在很多地方都读到过,在 Java 中发生哈希冲突后,它会根据哈希冲突的数量在内部使用链表/树。直到这很好,

但是如何使用“键”取回预期值

java hashmap data-retrieval new-operator hash-collision

3
推荐指数
1
解决办法
349
查看次数

为什么将值分配给字典的键“True”会覆盖同一字典中键“1”的值?

对于这个简单的字典 -

Key 1 和 Value "apple" 总是打印为 "1: False"

有没有我忽略的原因?

$ cat dict.py

pairs = {1: "apple",
    "orange": [2, 3, 4], 
    True: False, 
    None: "True",
}
print(pairs)

Run Code Online (Sandbox Code Playgroud)

* $ python3.8 dict.py

{1: False, 'orange': [2, 3, 4], None: 'True'}

Run Code Online (Sandbox Code Playgroud)

谢谢

python dictionary hashtable key hash-collision

3
推荐指数
1
解决办法
43
查看次数

散列 3d 坐标时频繁发生散列冲突

我正在尝试对 3d 坐标进行散列,以便为地图的索引创建唯一 ID

我的方法是目前

return hash(x + hash(y + hash(z)));
Run Code Online (Sandbox Code Playgroud)

或者在 C++ 中

struct ChunkHasher
{
    std::size_t operator()(FLOAT3 const& vec) const
    {
        return std::hash<float>()(
            vec.x + std::hash<float>()(
                vec.y + std::hash<float>() (vec.z)
                )
            );
    }
}chunkHasher;
Run Code Online (Sandbox Code Playgroud)

但问题是我得到的负载哈希冲突的...只是运行这个测试,都vec(0,0,0)vec(-1,0,0)映射到对方

我觉得这应该可行,散列冲突应该只2.32831e-08%在我粗略计算的时候发生……我错过了什么吗?

编辑:在我的程序执行过程中,无论何时计算,给定的输入都应该散列到相同的输出中,因此不可能在每次调用时更改散列器的某种内部状态

c++ hash hash-collision

3
推荐指数
1
解决办法
70
查看次数