除了 md5 有没有比较短的哈希算法

讨论 未结 31 103
brader
brader 会员 2022年8月15日 10:16 发表
<p>平时都是使用 md5 做哈希,但是有时候感觉 32 位太长了,有点浪费,想问下大家除了 md5 ,还有没有其他优秀的哈希算法?比较短的</p>
收藏(0)  分享
相关标签: 灌水交流
注意:本文归作者所有,未经作者允许,不得转载
31个回复
  • seki
    2022年8月15日 10:16
    crc32 ? 越短越容易碰撞
    0 0
  • brader
    2022年8月15日 10:16
    额,是的,可能我用的单位表述不是很专业,我想说的就是看到它的是长度为 32 的字符串形式,明白就好
    0 0
  • brader
    2022年8月15日 10:16
    想问下截取中间的是什么依据,靠谱吗
    0 0
  • brader
    2022年8月15日 10:16
    嗯嗯,明白,短的话碰撞概率就高,但是有某些简单的场景,不需要那么高的抗碰撞率
    0 0
  • murmur
    2022年8月15日 10:46
    crc32 ,我们是做 url 二级索引的,url 多了一级索引查的很郁闷,所以先 hash 一次然后二次查询
    0 0
  • ysc3839
    2022年8月15日 10:46
    CRC32 FNV1a-32 CityHash32 等,一般一些简单用途我会选 FNV1a-32 ,因为它非常简单。
    0 0
  • Bromine0x23
    2022年8月15日 10:46
    看起来不需要防碰撞,那就 CRC 或者 里面挑一个
    0 0
  • AX5N
    2022年8月15日 11:17
    CRC3 CRC4 CRC8 CRC16 CRC32 CRC64
    0 0
  • zengxs
    2022年8月15日 11:17
    md5 默认是 hex 格式输出,你可以输出成 base64 ,这样去掉占位的 = 号,就只有 22 位字符了
    0 0
  • raaaaaar
    2022年8月15日 13:45
    直接所有 ascill 相加成 16 进制😁
    0 0
  • mitu9527
    2022年8月15日 13:45
    防碰撞哈希算法就没短的,感觉你要的是快速哈希算法,比如 Murmur 或者 CRC ,快且短,但是容易发生冲突。
    0 0
  • tool2d
    2022年8月15日 13:45
    把 MD5 断尾没问题,你可以自己做碰撞概率测试,每个 bit 概率是一样的。
    0 0
  • changnet
    2022年8月15日 14:17
    非标准 base64 算法。把数字,小写字母,大写字母和一些特殊字符都用上,变成 N 进制,重新再编码这样就短了。一个 uuid 都可以编码到 22 个字符以下,只是字符看你能不能接受
    0 0
  • Juszoe
    2022年8月15日 14:47
    哈希截断挺常见的,很多标准库都会有这种操作
    0 0
  • felixlong
    2022年8月15日 14:47
    SipHash 不是专门设计来解决你这个问题的嘛?
    0 0
  • kenvix
    2022年8月15日 14:47
    CRC32 ,短到你用一个 int 就能存
    0 0
  • CRVV
    2022年8月15日 18:15
    直接截前面一段就行,要多长截多长 但是 md5 本来就是比较差的算法,再截一下就更差了,如果需要防碰撞就换个 sha256 之类的吧
    0 0
  • CRVV
    2022年8月15日 18:46
    直接截前面一段就行,要多长截多长 但是 md5 本来就是比较差的算法,再截一下就更差了,如果需要防碰撞就换个 sha256 之类的吧
    0 0
  • bl4ckoooooH4t
    2022年8月16日 01:18
    jhash 算法。 计算字符串的哈希,得到 4 字节哈希值。
    0 0
  • bigtear
    2022年8月16日 01:18
    wyhash ,输出字符串长度 16 位,而且是目前最快且安全的算法
    0 0
  • bigtear
    2022年8月16日 01:18
    而且 [wyhash is the default hashing algorithm of the great great Zig, V, Nim and Go (since 1.17) language]( )
    0 0