본문 바로가기
컴퓨터 이야기

파일 해시(hash)값 뽑는 방법 - 리눅스, 윈도우

by 밴스 2021. 10. 13.
728x90

리눅스

리눅스는 명령어 사용이 간단함.

현재 디렉터리에서 해시 추출하고 싶은 경우

$ md5sum ./*
$ sha256sum ./*

본인이 사용하고자 하는 알고리즘에 맞춰서 사용하면 됨.

 

만약에 현재 디렉터리 파일 외에 하위 디렉터리에 있는 파일을 전부 추출하고 싶은 경우

$ find . -name "*" -exec md5sum {} \;
$ find . -name "*" -exec sha256sum {} \;

디렉터리를 제외한 파일들의 경우에는 전부 해시값이 콘솔창에 기록되는 것을 확인할 수 있음.

 

위 명령어를 해보다보면 15만개가 넘어가면 점점 추출속도가 극악이 됨
멀티코어로 나눠서 하고 싶으면 다음과 같이 명령어를 사용하면 됨.
아래는 현재디렉터리의 파일들을 전부 훑어서 하위 디렉터리의 'data.sha256sum.list'에 저장하는 스크립트임.

$ find . -name "*" -type f -print0 | xargs -0r -n 1 -P 0 openssl dgst -sha256 > ../data.sha256sum.list

윈도우

윈도우 운영체제에서 해시값을 추출하는 방법은 다음과 같음.

PowerShell을 켠 후 아래 명령어를 사용하면 됨.

 

1. 파일 1개 hash 추출

c:\> certutil -hashfile "파일명" MD5

위 방법은 파일 1개에 대해서만 추출이 가능하다는 한계가 있다.

 

만약 여러개 파일(디렉터이에 있는 파일)에 대해서,
추출하고자 한다면 다음 명령어를 쓰는것을 추천 함.

 

2. 파일 여러개 hash 추출

c:\> Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "*" -Recurse)

 

검색해봤을때 위 명령어 조합이 제일 간단한것 같음.
타이핑 해봤을때 따로 powershell script 파일을 만들지 않고 타이핑 하면 확인할 수 있어 제일 괜찮은 것으로 보임.

 

만약에 filepath가 너무 길어서 잘리는것이 싫다면,

다음을 추가해서 주면 더 유용함.

 

3. (하위 디렉터리 포함) 파일 여러개 + path 잘리지 않도록 hash 추출

c:\> Get-FileHash -Algorithm MD5 -Path (Get-ChildItem "*" -Recurse) | export-csv -encoding utf8 -Path "list.csv"
c:\> Get-FileHash -Algorithm SHA256 -Path (Get-ChildItem "*" -Recurse) | export-csv -encoding utf8 -Path "list.csv"

뒤에 export-csv 명령어를 사용하여 csv 파일을 추출할 수 있음. (인코딩은 한글 디렉터리가 있을경우를 대신해 utf8을 추천 함)
알고리즘 선택에 따라서 MD5, SHA256 선택해서 추출 할 수 있음. (이 외에 다른 알고리즘도 다수 존재 함)

 

혹시 위 명령어가 돌아가지 않으면, 아래처럼 사용하면 됨.

c:\> Get-ChildItem "*" -Recurse | Get-FileHash -Algorithm MD5 | export-csv -encoding utf8 -Path "list.csv"
c:\> Get-ChildItem "*" -Recurse | Get-FileHash -Algorithm SHA256 | export-csv -encoding utf8 -Path "list.csv"

 

4. MD5 대신 다른 알고리즘 사용 hash 추출 

c:\> certutil -hashfile "파일명" SHA256

MD5 대신에 다른 알고리즘 이름을 사용하면 됨.
위 스크립트의 경우에는 SHA256으로 적용함.

 

반응형

댓글