Есть ли встроенная утилита Checksum для Windows 10, использующая CRC-32?

Есть ли встроенная утилита Checksum для Windows 10, использующая CRC-32? Я проверил разные ответы, которые старые и упоминают certUtil, но который не поддерживает CRC-32 или CRC-64.

Обновление: я также проверил Есть ли встроенная утилита для проверки контрольных сумм в Windows 7? тем не менее, это старый вопрос, и в нем конкретно не говорится о CRC-32, и Windows 10, возможно, уже поддерживает его. Вот почему спрашиваю это.

7 ответов

Есть способ получить CRC-32 на ванильной Windows 7, но вам это не понравится:).

  1. Возьмите файл, для которого вы хотите получить CRC-32, и отправьте его в -> сжатую (zip) папку, используя контекстное меню в проводнике.
  2. Откройте zip-файл с помощью проводника Windows, установите представление в деталях.
  3. Щелкните правой кнопкой мыши заголовок сведений и выберите столбец CRC-32, который будет виден.
  4. Измените размер столбцов, чтобы CRC-32 был виден.
  5. Вот и вы!

7-Zip предоставляет дополнительную запись в контекстном меню Проводника Windows, из которой можно рассчитать контрольные суммы:

  1. Щелкните правой кнопкой мыши файл, для которого вы хотите получить CRC-32. Появится контекстное меню.
  2. Выберите пункт подменю CRC SHA .
  3. Выберите любой из доступных алгоритмов: CRC-32, CRC-64, SHA-1 или SHA-256 , чтобы вычислить соответствующую контрольную сумму, или выберите « * », чтобы вычислить их все и дополнительно BLAKE2sp.

Я открыл ZIP-архив с помощью проводника Windows, щелкнул файл правой кнопкой мыши, чтобы отобразить свойства, чтобы увидеть значение CRC32:

Для Windows 10 я могу предложить решение PowerShell для чтения API RtlComputeCrc32 в Ntdll.dll.

параметр (
    [Параметр(Обязательный=$true)]
    [строка]$InputFile
)

Добавить-Тип -TypeDefinition @"
использование системы;
использование System.Runtime.InteropServices;

общественный класс Win32Api {
    [DllImport("ntdll.dll")]
    public static extern uint RtlComputeCrc32(uint dwInitial, byte[] pData, int iLen);
}
"@

# Читаем файл в байтах
$fileBytes = [System.IO.File]::ReadAllBytes($InputFile)

# Вычисляем контрольную сумму CRC32 с помощью Win32 API
$crc32 = [Win32Api]::RtlComputeCrc32(0, $fileBytes, $fileBytes.Length)

# Преобразуем значение CRC32 в шестнадцатеричную строку
$crc32String = $crc32.ToString("X8")

# Отображение контрольной суммы CRC32
Вывод записи «CRC32: 0x$crc32String»
#Просто чтобы окно Powershell оставалось открытым. Удалите эту строку для неинтерактивного использования.
Пауза

Сохраните этот скрипт как файл crc32.ps1. Вы можете запустить его на консоли Windows как

Powershell -ExecutionPolicy Bypass -File crc32.ps1 -InputFile SomeFile.bin

Обернул код Джема Полата в функцию. Работает отлично и быстро! Спасибо, Джем!

      Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;

public class Win32Api {
    [DllImport("ntdll.dll")]
    public static extern uint RtlComputeCrc32(uint dwInitial, byte[] pData, int iLen);
}
"@

function Get-CRC32 {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true,ValueFromPipeline = $true)]
        [string]$InputFile
    )
    Write-host $InputFile
    # Read the file as bytes
    $fileBytes = [System.IO.File]::ReadAllBytes($InputFile)

    # Calculate the CRC32 checksum using the Win32 API
    $crc32 = [Win32Api]::RtlComputeCrc32(0, $fileBytes, $fileBytes.Length)

    # Convert the CRC32 value to hexadecimal string
    $crc32String = $crc32.ToString("X8")

    # Display the CRC32 checksum
    Write-Output $crc32String
}

OpenHashTab — хороший инструмент, рекомендуемый для выполнения работы https://github.com/namazso/OpenHashTab/releases/tag/v3.0.4

На моей стороне это работает, но вы ДОЛЖНЫ находиться в заархивированной папке через проводник Windows. Затем, оказавшись внутри, вы увидите вариант столбца CRC-32.

Другие вопросы по тегам