例如 123456 的 md5 为 e10adc3949ba59abbe56e057f20f883e, 如果 github 存储没有限制,能不能实现以下功能: 1 、每两个字符作为一个目录,之后一组字符作为文件; 2 、文件内容存储 md5 对应的明文,例如 3e.txt => 123456 ; 3 、参与者将计算的结果提交上来,或者分仓库;
最终达到的效果,获取一段 md5 密文 e10adc3949ba59abbe56e057f20f883e,通过访问 /e1/0a/dc/39/49/ba/59/ab/be/56/e0/57/f2/0f/88/3e.txt 可得对应的明文。
1
IMCA1024 2020-03-23 14:26:46 +08:00
想不明白有什么用吖
|
2
est 2020-03-23 14:27:21 +08:00
研究下 Merkle tree
|
3
loading 2020-03-23 14:29:08 +08:00 via Android
在线彩虹表?
|
4
stevenkang OP @IMCA1024 方便查找明文,虽然没多大用途,但有时候还是有点用
|
5
stevenkang OP @loading 是的,任意人可以参与的,作为一个数据集方便所有人使用
|
6
dremy 2020-03-23 14:31:42 +08:00 via iPhone
天才的想法
|
7
wangyzj 2020-03-23 14:33:13 +08:00
你这是要做 hash 碰撞测试吗
|
8
fcten 2020-03-23 14:35:20 +08:00
有,貌似是 100GB,用来存彩虹表是不够的
|
9
hstdt 2020-03-23 14:36:44 +08:00 via iPhone
想不出使用场景,而且广泛使用后会影响搜索结果的吧,会不会被判定成滥用?
|
10
dorentus 2020-03-23 14:37:31 +08:00
有限制。
为什么要用 GitHub ?或者说,为什么要用 git 来承载这个…… |
11
Mohanson 2020-03-23 14:37:59 +08:00 via Android 1
彩虹表适合用压缩前缀树存储。你的想法脑洞太大,表示无法理解
|
12
stevenkang OP @fcten 我看了网上也是说的硬限制 100G,超过 1G 会提醒。我在想能不能一个账号下建立多个仓库,或者多个账号 x 多个仓库,一人负责一段来实现。比如 A 账号 A1 仓库负责 00 开头的 md5,A 账号 A2 负责 01 以此类推
|
13
hstdt 2020-03-23 14:39:50 +08:00 via iPhone
还想点没买弄清楚,直接存不可以么,为什么要切成 2 位一个做这么多文件夹
|
14
stevenkang OP |
15
dorentus 2020-03-23 14:44:57 +08:00
如果只是为了通过 URL 能访问,那么路径 /e1/0a/dc/39/49/ba/59/ab/be/56/e0/57/f2/0f/88/3e.txt 和 /e10adc3949ba59abbe56e057f20f883e.txt 并没有本质的区别。不管下层如何实现,上层都能提供出这样的访问路径。
此外,“密文” e10adc3949ba59abbe56e057f20f883e 对应的“明文”的数量是无限的。 |
16
Vhc001 2020-03-23 14:45:22 +08:00
@stevenkang #14 硬盘不够怎么 git push 上去? Github 网页版在线编辑吗?
|
17
stevenkang OP |
18
hstdt 2020-03-23 14:56:30 +08:00 via iPhone
@stevenkang 既然说起因是硬盘不够用,意思是本地源文件也不进行存储,那你怎么恢复文件呢?比如一段 md5 是 987654,那你靠什么神仙代码能够反推出来源文件是什么呢?更进一步 md5 不唯一
|
19
mengzhuo 2020-03-23 15:09:55 +08:00
又一个学太少想太多的……彩虹表也不是这么玩的。
md5 的一个哈希(你所说的密文),对应无数可能,没准一个值就是 100G 的文件,直接撑爆。 |
20
krixaar 2020-03-23 15:20:17 +08:00
反推某个 md5 的无限种可能的其中一种明文意义何在?
如果是为了破解密码,敢只用一次 md5 作为加密的地方,估计根本不需要反推密码也能打进去啊? 如果不是为了破解密码,哪儿还有使用场景? |
21
AnsonUTF8 2020-03-23 16:28:47 +08:00 via iPhone
大家不要打击楼主,再给楼主点时间,很快他就要提出 IPFS 了🤫
|
22
tempdban 2020-03-23 17:41:24 +08:00
|
24
purensong 2020-03-23 18:00:55 +08:00
天才的想法,这是和区块链有关吗
|
25
zst 2020-03-23 20:11:07 +08:00
cmd5 的宣传可是占用硬盘超过 500T
|
26
xyjincan 2020-03-23 21:38:16 +08:00
请求速度可能就自己算出来了
|
27
123444a 2020-03-23 22:02:02 +08:00 via Android
彩虹表是利用一个新的哈希函数跟你要破解的哈希依次迭代
|
28
maskerTUI 2020-03-23 22:07:28 +08:00
不如买多几个硬盘
|
30
systemcall 2020-03-24 17:47:37 +08:00
要实现目的的话,把条件放开点来考虑试试。
如果服务器本身不存储文件,每个 client 自己存储一些文件,client 之间通过网络来传输需要的文件,考虑到 md5 之类的方式会有多个文件对应一个 hash,就加上文件名。 文件分成块,这样有利于传输。每个块做一个 hash,这样传输的时候好校验。 client 之间加上交换节点的功能,这样可用性会好很多。 就得到了磁力链。 |