Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Как вычислить crc32 сумму файла? (http://forum.oszone.net/showthread.php?t=300329)

molotova 26-05-2015 17:46 2511645

Как вычислить crc32 сумму файла?
 
Добрый день!
Сразу оговорюсь, что использую PowerShell 4. Читала справку, в ней написано, что Get-FileHash вычисляет только MD5/SHA[1,256,384,512]/RIPEMD160 и MACTripleDES. Я конечно знаю, что crc32 это не то чтобы хэш, но какбы хотелось его тоже вычислять. Подскажите как это сделать?

greg zakharov 26-05-2015 17:58 2511654

Код:

param(
  [Parameter(Mandatory=$true, ValueFromPipeline=$true)]
  [ValidateScript({Test-Path $_})]
  [String]$FileName
)

(Add-Type -Mem @'
  [DllImport("ntdll.dll")]
  internal static extern UInt32 RtlComputeCrc32(
      UInt32 InitialCrc,
      Byte[] Buffer,
      Int32  Length
  );
 
  public static String ComputeCrc32(String file) {
    UInt32 crc32 = 0;
    Int32  read;
    Byte[] buf = new Byte[4096];
   
    FileStream fs = null;
   
    try {
      fs = File.OpenRead(file);
      while((read = fs.Read(buf, 0, buf.Length)) != 0)
        crc32 = RtlComputeCrc32(crc32, buf, read);
    }
    catch (Exception e) {
      Console.WriteLine(e.Message);
    }
    finally {
      if (fs != null) fs.Close();
    }
   
    return (crc32 != 0 ? "0x" + crc32.ToString("X", CultureInfo.CurrentCulture) : "n/a");
  }
'@ -Name RtlCrc32 -NameSpace Crc32 -Using System.IO,
System.Globalization -PassThru)::ComputeCrc32((Convert-Path $FileName))



Время: 04:57.

Время: 04:57.
© OSzone.net 2001-