Есть ли встроенная утилита 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, но вам это не понравится:).
- Возьмите файл, для которого вы хотите получить CRC-32, и отправьте его в -> сжатую (zip) папку, используя контекстное меню в проводнике.
- Откройте zip-файл с помощью проводника Windows, установите представление в деталях.
- Щелкните правой кнопкой мыши заголовок сведений и выберите столбец CRC-32, который будет виден.
- Измените размер столбцов, чтобы CRC-32 был виден.
- Вот и вы!
7-Zip предоставляет дополнительную запись в контекстном меню Проводника Windows, из которой можно рассчитать контрольные суммы:
- Щелкните правой кнопкой мыши файл, для которого вы хотите получить CRC-32. Появится контекстное меню.
- Выберите пункт подменю CRC SHA .
- Выберите любой из доступных алгоритмов: 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.