API com.google.common.hash предлагает:
- Унифицированный удобный API для всех хеш-функций
- Seedable 32- и 128-битные реализации murmur3
- Адаптеры md5 (), sha1 (), sha256 (), sha512 () изменяют только одну строку кода для переключения между ними и бормотают.
- goodFastHash (int bits), для тех случаев, когда вам все равно, какой алгоритм вы используете
- Общие утилиты для экземпляров HashCode, такие как combOrdered / combUnordered
Прочтите руководство пользователя ( Объяснение ввода-вывода , Объяснение хеширования ).
Для вашего варианта использования Files.hash()
вычисляет и возвращает значение дайджеста для файла.
Например, sha-1 расчет дайджеста (измените SHA-1 на MD5, чтобы получить дайджест MD5)
HashCode hc = Files.asByteSource(file).hash(Hashing.sha1());
"SHA-1: " + hc.toString();
Обратите внимание, что crc32 намного быстрее, чем md5 , поэтому используйте crc32 , если вам не нужна криптографически безопасная контрольная сумма. Также обратите внимание, что md5 не следует использовать для хранения паролей и т. П., Так как это просто для взлома паролей, для паролей используйте bcrypt , scrypt или sha-256 вместо.
Для долгосрочной защиты с помощью хэшей Схема подписи Меркле повышает безопасность, а Исследовательская группа по постквантовой криптографии, спонсируемая Европейской комиссией, рекомендовала использовать эту криптографию для долговременной защиты от квантовых компьютеров ( исх ).
Обратите внимание, что crc32 имеет более высокую частоту столкновений, чем другие.