Product SiteDocumentation Site

3.3. Verifying the Downloaded Image

Because transmission errors or other problems may corrupt the Fedora image you have downloaded, it is important to verify the file's integrity. After the images are created, an operation is performed on the file that produces a value called a checksum using a complex mathematical algorithm. The operation is sufficiently complex that any change to the original file will produce a different checksum.
By calculating the image's checksum on your own computer and comparing it to the original checksum, you can verify the image has not been tampered with or corrupted. The original checksum values are provided at https://fedoraproject.org/verify, and are gpg signed to demonstrate their integrity.

3.3.1. Verifying checksums on Windows systems

Procedure 3.1. Verifying checksums on Windows systems
  1. Download the Fedora image of your choice from https://fedoraproject.org/get-fedora and the corresponding checksum file from https://fedoraproject.org/verify
  2. Open a powershell session.
  3. Change to the directory containing the downloaded files.
    > cd $HOME\Downloads\
    > ls
    
    Directory: C:\Users\Pete\Downloads
    
    Mode                LastWriteTime         Length  Name
    ----                -------------         ------  ----
    -a---        11/25/2014  12:39 PM            272  Fedora-Server-21-x86_64-CHECKSUM
    -a---        11/25/2014  12:39 PM     2047868928  Fedora-Server-DVD-x86_64-21.iso
    
    
  4. Load the resources required to calculate the checksum.
    > $image = "Fedora-Server-DVD-x86_64-21.iso"
    > $checksum_file = "Fedora-Server-21-x86_64-CHECKSUM"
    > $sha256 = New-Object -TypeName System.Security.Cryptography.sha256CryptoServiceProvider
    > $expected_checksum = ((Get-Content $checksum_file | Select-String -Pattern $image) -split " ")[0].ToLower()
    
  5. Calculate the downloaded image's checksum. This will take a while!
    > $download_checksum = [System.BitConverter]::ToString($sha256.ComputeHash([System.IO.File]::ReadAllBytes("$PWD\$image"))).ToLower() -replace '-', ''
    
  6. Compare the calculated checksum to the expected checksum.
    > echo "Download Checksum: $download_checksum"
    > echo "Expected Checksum: $expected_checksum"
    > if ( $download_checksum -eq "$expected_checksum" ) {
    echo "Checksum test passed!"
    } else {
    echo "Checksum test failed."
    }