PowerShell에서 MD5 체크섬을 얻는 방법

  1. PowerShell에서 MD5 해싱 알고리즘 사용하기
  2. PowerShell에서 [System.Security.Cryptography.MD5] 클래스 사용하기
  3. PowerShell에서 MD5CryptoServiceProvider 클래스 사용하기
  4. 결론
PowerShell에서 MD5 체크섬을 얻는 방법

PowerShell에서 데이터 무결성과 보안을 보장하는 데 있어 MD5 해싱 알고리즘은 보안 맥락에서의 상대적 중요성이 줄어들고 있음에도 여전히 유용한 도구입니다. 취약점으로 인해 암호화 용도로는 권장되지 않지만, MD5는 파일 전송을 검증하고 변조를 감지하는 데 유용합니다.

PowerShell의 기능을 활용하여 MD5 체크섬을 계산하는 다양한 방법을 탐색하며, 기본 및 고급 접근 방식에 대한 통찰력을 제공합니다.

PowerShell에서 MD5 해싱 알고리즘 사용하기

MD5가 보안에 권장되지 않더라도, 파일 전송이 변조되었는지 또는 성공했는지를 확인하는 데 훌륭한 솔루션입니다.

먼저, 전송 전과 후의 파일의 MD5 지문을 가져옵니다.

같은 값이 나올 경우, 파일 전송이 변조되지 않은 것입니다. 그렇지 않으면 손상된 것입니다.

이를 위해 우리는 Get-FileHash cmdlet을 사용할 것입니다. Get-FileHash cmdlet은 파일의 해시 값을 표시합니다.

기본적으로 SHA256 알고리즘을 사용하지만, 우리는 추가 매개변수를 추가하여 MD5를 사용할 수 있습니다.

Get-FileHash [-Path] <file> [[-Algorithm] <algo>] [Options]
  • -Algorithm: 사용할 해시 알고리즘을 지정합니다. 이 경우, 우리는 MD5를 사용합니다.
  • -Path: 해시 값을 계산할 파일의 경로를 지정합니다.

파일 경로 대신 스트림과 함께 사용할 수도 있습니다.

Get-FileHash [-InputStream] <stream> [[-Algorithm] <algo>] [Options]
  • [-InputStream] <stream>: 해시 계산을 위한 입력 스트림을 지정하며, 기본값은 -Path로 지정된 파일입니다.

  • [[-Algorithm] <algo>]: 사용할 해시 알고리즘(예: MD5, SHA1)을 지정합니다.

  • [Options]: 사용자 정의 및 오류 처리를 위한 추가 설정으로 -Path, -LiteralPath, -Force 등이 있습니다.

다음은 예시입니다:

Get-FileHash -Path "path\example.txt" -Algorithm MD5

이 코드에서는 "C:\Path\To\File.txt"에 위치한 파일의 MD5 체크섬을 계산하기 위해 Get-FileHash cmdlet을 사용합니다. cmdlet은 지정된 파일에 대한 MD5 해시 값을 자동으로 계산합니다.

출력:

파워쉘에서 md5 체크섬 얻기 - 출력 1

-Path 인수는 필수가 아니므로 사용할 필요가 없습니다. 대신 파일 경로를 지정하고 알고리즘 매개변수를 추가하여 SHA256 대신 MD5를 사용합니다.

PowerShell 스크립트에서 변수를 생성하여 결과를 저장하고, $variable.Hash와 같이 해시 속성을 사용하여 원본 파일과 동일한 값인지 확인할 수 있습니다.

PowerShell에서 문자열 해싱하기

안타깝게도 PowerShell에서 문자열로부터 해시를 생성하는 직접적인 함수나 기본 명령은 없습니다.

하지만, Get-FileHash를 스트림 매개변수와 함께 사용하는 것이 가능하므로 문자열의 해시를 계산하는 해결책이 됩니다.

아래 스니펫으로 바로 시작해보겠습니다:

$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write("MD5Online")
$writer.Flush()
$stringAsStream.Position = 0
Get-FileHash -InputStream $stringAsStream -Algorithm MD5

이 코드 스니펫에서는 MemoryStream 객체 $stringAsStream를 생성하고, StreamWriter $writer를 초기화하여 문자열 MD5Online을 스트림에 씁니다. 그런 다음 데이터가 스트림에 기록되도록 작성기를 플러시합니다.

스트림의 위치를 처음으로 되돌린 후, Get-FileHash cmdlet을 사용하여 -InputStream 매개변수를 $stringAsStream으로, -Algorithm 매개변수를 MD5로 설정합니다. 이 명령은 제공된 문자열의 MD5 체크섬을 계산합니다.

출력:

PowerShell에서 md5 체크섬 가져오기 - 출력 2

이 기사 첫 번째 섹션과 비교하여 유일한 변화는 -Path 대신 -InputStream을 사용했다는 것입니다.

출력을 보면, 문자열의 MD5 해시를 결과로 받습니다.

PowerShell에서 [System.Security.Cryptography.MD5] 클래스 사용하기

[System.Security.Cryptography.MD5] 클래스는 데이터의 MD5 해시 값을 계산하는 기능을 제공합니다. 이 클래스는 .NET Framework의 Cryptography 네임스페이스의 일부이며, PowerShell 스크립트에서 MD5 체크섬을 생성하기 위한 견고하고 효율적인 솔루션을 제공합니다.

[System.Security.Cryptography.MD5] 클래스는 MD5 해시 값을 계산하기 위한 ComputeHash()라는 메서드를 제공합니다. 구문은 다음과 같습니다:

$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
  • $md5: Create() 메서드를 사용하여 생성된 MD5 클래스 인스턴스를 나타냅니다.
  • $hash: 계산된 MD5 해시 값을 저장합니다.
  • $data: MD5 체크섬을 계산할 데이터입니다. 이 데이터는 파일 내용을 나타내는 바이트 배열이거나 문자열일 수 있습니다.

예시는 다음과 같습니다:

$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = [System.Security.Cryptography.MD5]::Create()
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString

이 코드 스니펫에서는 문자열 MD5Example[System.Text.Encoding]::UTF8.GetBytes()를 사용하여 바이트 배열로 변환합니다. 그런 다음 [System.Security.Cryptography.MD5]::Create()를 사용하여 MD5 클래스의 인스턴스를 생성하고, 제공된 데이터에 대한 MD5 해시 값을 생성하기 위해 ComputeHash() 메서드를 호출합니다.

마지막으로, [System.BitConverter]::ToString()을 사용하여 해시 값을 문자열 형식으로 변환하고, -replace 연산자를 사용하여 출력에서 모든 대시를 제거합니다.

출력:

파워셸에서 md5 체크섬 가져오기 - 출력 3

PowerShell에서 MD5CryptoServiceProvider 클래스 사용하기

MD5CryptoServiceProvider 클래스는 .NET Framework의 Cryptography 네임스페이스의 일부입니다. 이 클래스는 MD5 암호화 알고리즘을 사용하여 데이터의 MD5 해시 값을 계산하는 기능을 제공합니다.

MD5CryptoServiceProvider 클래스는 MD5 해시 값을 계산하기 위한 ComputeHash()라는 메서드를 제공합니다. 구문은 다음과 같습니다:

$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
  • $md5: New-Object를 사용하여 생성된 MD5CryptoServiceProvider 클래스의 인스턴스를 나타냅니다.
  • $hash: 계산된 MD5 해시 값을 저장합니다.
  • $data: MD5 체크섬을 계산할 데이터입니다. 이 데이터는 파일 내용을 나타내는 바이트 배열이거나 문자열일 수 있습니다.

예시는 다음과 같습니다:

$data = [System.Text.Encoding]::UTF8.GetBytes("MD5Example")
$md5 = New-Object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
$hash = $md5.ComputeHash($data)
$hashString = [System.BitConverter]::ToString($hash) -replace '-', ''
Write-Output $hashString

이 코드 스니펫에서는 문자열 MD5Example[System.Text.Encoding]::UTF8.GetBytes()를 사용하여 바이트 배열로 변환합니다. 그런 다음 New-Object를 사용하여 MD5CryptoServiceProvider 클래스의 인스턴스를 생성하고, 제공된 데이터에 대한 MD5 해시 값을 생성하기 위해 ComputeHash() 메서드를 호출합니다.

마지막으로, [System.BitConverter]::ToString()을 사용하여 해시 값을 문자열 형식으로 변환하고, -replace 연산자를 사용하여 출력에서 모든 대시를 제거합니다.

출력:

PowerShell에서 md5 체크섬 얻기 - 출력 4

결론

PowerShell은 MD5 체크섬을 계산하기 위한 여러 가지 경로를 제공하며, 각 경로는 다양한 시나리오와 복잡성 수준에 적합합니다. Get-FileHash와 같은 기본 cmdlet을 사용하든, System.Security.Cryptography.MD5와 같은 .NET 클래스를 활용하든, MD5CryptoServiceProvider와 같은 암호화 공급자를 사용하든, PowerShell 사용자는 데이터 무결성과 보안을 보장하기 위한 다양한 도구를 사용할 수 있습니다.

이러한 방법을 이해하고 효과적으로 활용함으로써, PowerShell 스크립트는 MD5 체크섬이 필요한 작업을 자신 있게 정밀하게 처리할 수 있습니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn