2012-04-03 88 views

回答

1

不是。散列算法的要点是它会为类似的输入产生不同的结果。如果散列总和可以产生最终散列值,那么通过计算每个字母的散列值并向后处理总和来恢复散列字符串的值将是微不足道的。

好的哈希算法对于输入中的任何(小的或大的)变化都会产生非常不同的结果,并且产生不可能与变化相关的变化。

SHA1在这方面比MD5好。 MD5不再被认为是安全的。

+1

感谢您的回答。为了优化我的问题,我想要做以下事情:我有“我不”的md5hash,但不是字符串。然而,我有字符串“喜欢工作”。是否可以使用第一部分的md5sum和字符串“like work”生成“我不喜欢工作”的最终散列?我不知道亚当是否已经回答了这个问题。它就像第一个答案的代码,只是我从第5行开始,并将当前摘要设置为第一部分的md5sum。 – user1309165 2012-04-04 19:29:23

+0

编号散列不能这样工作。 – 2012-04-04 19:39:06

+0

因此,在消化流时,md5哈希算法在其内存中的内容多于当前哈希?为了在稍后恢复摘要,我需要保存所有内存表,而不仅仅是md5哈希正确吗? – user1309165 2012-04-04 19:43:35

0

我认为两者的答案都是否定的,但为什么不自己测试呢?

+2

更好作为评论,你不觉得吗? – 2012-04-03 23:29:10

0

你可以在Python中做这样的事情,但在幕后它只是为你连接所有的字符串。

import md5 

m = md5.new() 
m.update("I dont ") 
m.update("like working") 
print m.hexdigest() # b436bd6442ee000b4778bdbc8bee71d9 

m = md5.new() 
m.update("I dont like working") 
print m.hexdigest() # b436bd6442ee000b4778bdbc8bee71d9 
+0

它没有利用这些块吗?你可以推动新的字符串部分,直到一个块被填满,然后它会放弃所有用来计算这个块的字符串内容,因为它已被消解。这会限制所使用的最大内存。想象从流式磁盘数据更新几千兆字节的字符串内容。 – 2015-04-21 08:35:27