Мне нужен алгоритм хэширования при использовании Ruby. В моей ситуации я сравниваю содержимое файла. Я использовал MD5, но он также проверяет имя файла (или, похоже, все равно). Есть ли алгоритм, который я могу легко реализовать, или мне нужно написать его с нуля?Алгоритм Ruby Hash
ответ
Использование 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"
Что вы делали, чтобы получить разные контрольные суммы?
Действительно? Я использовал FileUtils.cp, и он дал мне разные суммы. Для меня это тоже не имеет смысла. – avatarmonkeykirby
@avatarmonkeykirby Как вы относитесь к cp? 'compare_file' возвращает true и в этих файлах. Возможно, файлы, о которых идет речь, _are_ different (whitespace и т. Д.) – Slartibartfast
@avatarmonkeykirby: вы должны вставить этот код в вопрос. – tokland
- 1. Ruby hash hash of hash
- 2. ruby hash to javascript hash
- 3. Ruby Hash of Hash, Добавление новых товаров
- 4. Ruby: Как заполнить подкласс Hash от Hash
- 5. ruby iterate through hash
- 6. Ruby Hash: Вычитаемые количества
- 7. Создание Ruby Hash
- 8. Ruby: constant, module, hash
- 9. Ruby hash encrypting
- 10. Ruby: Расширение hash constructor
- 11. Ruby hash исключает?
- 12. Проверка Ruby Hash подмножество?
- 13. Ошибка в Ruby Hash!
- 14. Ruby, hash and object_id
- 15. ruby hash to rails
- 16. Связанный список Hash Ruby
- 17. Ruby Hash parsed_response error
- 18. Vim Ruby hash indentation
- 19. Ruby: merge inested hash
- 20. Pure-Ruby concurrent Hash
- 21. Итерация hash Ruby
- 22. ruby hash storage
- 23. Ruby Hash инициализировать путаницу
- 24. Ruby Hash пояснение
- 25. ruby hash, group_by value
- 26. Ruby, создающий функцию инвертирования Hash в Ruby
- 27. Ruby Hash.new vs Hash literal
- 28. Ruby Перечисляемый с помощью Hash
- 29. Awesome Print a Ruby Hash
- 30. Ruby Merge Hash Значение ключа
Глядя на реализацию этого, он сравнивает два потока файлов с блоком мудрый и останавливается, как только блоки не совпадают. Интересный метод не знал об этом раньше. –