2017-02-08 2 views
0

파일 입력 스트림의 md5를 생성하려고 시도했지만 생성 된 md5가 디스크의 파일에 대해 md5 명령 줄 실행과 다른 것으로 나타났습니다. md5를 생성하는 올바른 방법입니까?그루비에서 파일 입력 스트림의 MD5 생성

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

md5 해시를 계산하려면 'dis'의 바이트를 읽어야합니다 –

답변

2

DigestInputStream은 스트림을 통해 보내는 파일의 요약을 계산합니다. 스트림을 소비하지 않았으므로 빈 파일의 MD5 합계가 계산됩니다. 빈 파일에 md5sum을 수행하면 Groovy 코드에서 얻은 합계와 동일한 금액을 얻게됩니다. 두 코드 줄 사이에 dis.eachByte {}을 추가하면 파일의 올바른 MD5 합계가 표시됩니다.