对于学习目的,找出多少次我可以用自己编写一个md5函数而不会得到相同的值。
这是盐的并行/补充方法,因为这样使用蛮力更难破解价值。
答案 0 :(得分:4)
以下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)