我可以自己组合多少次md5功能?

时间:2013-09-27 18:58:49

标签: security hash brute-force md5sum

对于学习目的,找出多少次我可以用自己编写一个md5函数而不会得到相同的值

这是盐的并行/补充方法,因为这样使用蛮力更难破解价值。

1 个答案:

答案 0 :(得分:4)

看似无限。但是MD5已被证明不是collision resistant所以在某些时候你会有重复。

以下Ruby代码将循环应用MD5哈希算法,直到检测到重复,此时它将打印到达复制点所需的周期数。原始字符串是从字母字符中随机生成的。

require 'set'
require 'digest'

keys = Set.new

o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
string = (0...10).map{ o[rand(o.length)] }.join
count = 0

while !keys.include?(string) do
  count += 1
  puts count
  keys << string
  string = Digest::MD5.digest(string)
end

puts "#{count}"

这将持续超过15个周期...我会在找到重复后更新。

更新:由于我的机器资源有限,我不得不在75,933,338次循环后停止上述脚本而没有发生冲突(该设备已在内存中分配了~8 GB)