对文件进行 MD5 hash 算法后,得到一个 字节数组,为了便于通过 URL 进行保存,需要将字节数组转字符串,默认算法在这里 输出的字符串类似:831a3cf0f43dc6b1f12a75fa22ed3bf5,32 位,感觉有点长。
对文件进行 MD5 hash 算法后,得到一个 字节数组,为了便于通过 URL 进行保存,需要将字节数组转字符串,默认算法在这里 输出的字符串类似:831a3cf0f43dc6b1f12a75fa22ed3bf5,32 位,感觉有点长。
|
congeecMar 6, 2019
1
最短字符串怎么定义的?
关键词 hexdigest |
|
SeaRecluseMar 6, 2019
2
你取前 6 位或者 8 位就行了,不用存完
|
|
3
@congeec 10 位左右吧
|
|
lihongjie0209Mar 6, 2019
4
MD5 消息摘要算法(英语:MD5 Message-Digest Algorithm ),一种被广泛使用的密码散列函数,可以产生出一个 128 位( 16 字节)的散列值( hash value ),用于确保信息传输完整一致。MD5 由美国密码学家罗纳德·李维斯特( Ronald Linn Rivest )设计,于 1992 年公开,用以取代 MD4 算法。
128 位 一个 16 进制可以表示 4 位 128 / 4 = 32 这么看来你只能用更高进制的表示了 |
|
5
@SeaRecluse 你说的方法有一定道理,可我还是有些担心,毕竟我是用来做小文件的查重,如果重复了怎么办。
|
|
lihongjie0209Mar 6, 2019
6
更高进制为什么没使用, 参考: https://www.zhihu.com/question/37657503
|
|
rogwanMar 6, 2019 via Android
7
键盘上的字符就这么多,64 进制可以了,用于 URL 避免斜杠和等号。
|
|
SeaRecluseMar 6, 2019
8
@daijinming 做小文件的查重第一步不要用 md5,先用一个短摘要算法(名字我给忘了 orz,好像是生成 16 位的)进行粗略查重,然后在这些相同的再进行 md5 测试
|
|
janxinMar 6, 2019
9
@SeaRecluse 先用 CRC16 或者 CRC32 查重然后 md5 吧
|
|
10
|
|
pkoukkMar 6, 2019
11
java 里有 16 位 md5,但是它的值其实是 32 位里的 9-24 位。如果你要筛查的文件数不是天文数字,一般是够用的
|
|
yicong135Mar 6, 2019
12
你是不是需要这个 BitConverter.ToString(byte[] bytes)
|
|
c4f36e5766583218Mar 6, 2019
13
了解下:
1. java8: java.util.Base64#getUrlEncoder() 2. org.apache.commons.codec.binary.Base64#Base64(boolean) 3. com.google.common.io.BaseEncoding#base64Url() 4. base58?? |