【发布时间】:2011-12-21 17:18:42
【问题描述】:
我在使用 Ruby 时需要一个哈希算法。 在我的情况下,我正在比较文件的内容。我使用的是 MD5,但它也会检查文件名(或者似乎无论如何)。有没有一种我可以轻松实现的算法,或者我必须从头开始编写一个算法?
【问题讨论】:
我在使用 Ruby 时需要一个哈希算法。 在我的情况下,我正在比较文件的内容。我使用的是 MD5,但它也会检查文件名(或者似乎无论如何)。有没有一种我可以轻松实现的算法,或者我必须从头开始编写一个算法?
【问题讨论】:
使用FileUtils.compare_file。
require 'fileutils'
FileUtils.compare_file('somefile', 'somefile') #=> true
【讨论】:
我不确定你为什么认为它会比较文件名?
require "digest"
Digest::MD5.hexdigest(File.read('file1'))
=> "60b725f10c9c85c70d97880dfe8191b3"
Digest::MD5.hexdigest(File.read('file2'))
=> "60b725f10c9c85c70d97880dfe8191b3"
你做了什么来得到不同的校验和?
【讨论】:
compare_file 在这些文件上也返回 true。也许有问题的文件 不同(空格等...)
这类似于上面的答案,但使用 SHA256,因为如果我没记错的话,MD5 被彩虹表破坏了
require 'digest'
puts "Hello!"
puts Digest::SHA256.hexdigest 'message'
puts Digest::SHA256.hexdigest 'message2'
【讨论】: