【发布时间】:2019-03-29 16:17:55
【问题描述】:
我已将 349,900 单词从字典文件转换为 md5 哈希。示例如下:
74b87337454200d4d33f80c4663dc5e5
594f803b380a41396ed63dca39503542
0b4e7a0e5fe84ad35fb5f95b9ceeac79
5d793fc5b00a2348c3fb9ab59e5ca98a
3dbe00a167653a1aaee01d93e77e730e
ffc32e9606a34d09fca5d82e3448f71f
2fa9f0700f68f32d2d520302906e65ce
1c9b32ff1b53bd892b87578a11cbd333
26a10043bba821303408ebce568a2746
c3c32ff3481e9745e10defa7ce5b511e
我想训练一个神经网络来解密散列,只使用像多层感知器这样的简单架构。由于所有哈希值的长度都是 32,我想输入节点的数量是 32,但这里的问题是输出节点的数量。由于输出是字典中的单词,它没有任何特定的长度。它可以是各种长度。这就是为什么我对我应该拥有多少个输出节点感到困惑的原因。
我将如何编码我的数据,以便我可以拥有特定数量的输出节点?
我在此链接中找到了一篇论文here,它实际上使用神经网络解密了哈希。论文说
神经网络的输入是要解码的加密文本。这以双极或二进制格式输入神经网络。然后,它穿过隐藏层到达最终输出层,该输出层也是双极或二进制格式(如输入中给出的)。然后将其转换回纯文本以进行进一步处理。
我将如何实施论文中所说的内容。我正在考虑限制要解密的字符数。最初,我可以将其限制为最多 4 个字符(仅用于测试目的)。
我的输入节点将是32 节点,代表散列的每个字符。每个输入节点都将具有(each_hash_character/256 的 ASCII 值)。我的输出节点将有 32 个节点也代表二进制格式。由于 8 位/8 个节点代表一个字符,我的网络将能够解密最多 4 个字符的字符,因为 (32/8) = 4。(如果我愿意,我可以增加它。)我计划使用 33 个节点.我的网络架构可行吗? 32 x 33 x 32?如果不是,为什么?请指导我。
【问题讨论】:
-
@JuliusVainora --> 是的,我知道这一点,但我必须将其作为概念证明。事实上,一篇论文已经做到了。我只需要知道如何实现它。
标签: machine-learning encoding neural-network backpropagation perceptron