2017-02-08 3 views
0

Я пытаюсь сгенерировать md5 входного потока файла, но я замечаю, что сгенерированный md5 отличается от сгенерированного из запущенной командной строки md5 против файла на диске. Это правильный способ генерации md5?Создание MD5 входного потока файла в groovy

DigestInputStream dis = new DigestInputStream(is, MessageDigest.getInstance('MD5')) 
println "MD5 generated from Groovy: " + dis.getMessageDigest().digest().encodeHex().toString() 
+0

Вам необходимо прочитать байты с 'dis' для его вычисления хеша md5 –

ответ

2

DigestInputStream вычисляет дайджест файлов, отправляемых через поток. Поскольку вы не потребляете поток, вы вычисляете сумму MD5 пустого файла. Сделайте md5sum пустым файлом, и вы получите ту же сумму, которую вы получаете от вашего кода Groovy. Добавьте dis.eachByte {} между двумя кодами кода, и вы получите правильную сумму MD5 для вашего файла.

Смежные вопросы