SHA256 Klasa

Definicja

Oblicza skrót SHA256 dla danych wejściowych.Computes the SHA256 hash for the input data.

public ref class SHA256 abstract : System::Security::Cryptography::HashAlgorithm
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class SHA256 : System.Security.Cryptography.HashAlgorithm
type SHA256 = class
    inherit HashAlgorithm
Public MustInherit Class SHA256
Inherits HashAlgorithm
Dziedziczenie
Pochodne
Atrybuty

Przykłady

Poniższy przykład oblicza skrót SHA-256 dla wszystkich plików w katalogu.The following example calculates the SHA-256 hash for all files in a directory.

using namespace System;
using namespace System::IO;
using namespace System::Security::Cryptography;

// Print the byte array in a readable format.
void PrintByteArray( array<Byte>^array )
{
   int i;
   for ( i = 0; i < array->Length; i++ )
   {
      Console::Write( String::Format( "{0:X2}", array[ i ] ) );
      if ( (i % 4) == 3 )
            Console::Write( " " );

   }
   Console::WriteLine();
}

int main()
{
   array<String^>^args = Environment::GetCommandLineArgs();
   if ( args->Length < 2 )
   {
      Console::WriteLine( "Usage: hashdir <directory>" );
      return 0;
   }

   try
   {

      // Create a DirectoryInfo object representing the specified directory.
      DirectoryInfo^ dir = gcnew DirectoryInfo( args[ 1 ] );

      // Get the FileInfo objects for every file in the directory.
      array<FileInfo^>^files = dir->GetFiles();

      // Initialize a SHA256 hash object.
      SHA256 ^ mySHA256 = SHA256Managed::Create();
      array<Byte>^hashValue;

      // Compute and print the hash values for each file in directory.
      System::Collections::IEnumerator^ myEnum = files->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         FileInfo^ fInfo = safe_cast<FileInfo^>(myEnum->Current);

         // Create a fileStream for the file.
         FileStream^ fileStream = fInfo->Open( FileMode::Open );

         // Compute the hash of the fileStream.
         hashValue = mySHA256->ComputeHash( fileStream );

         // Write the name of the file to the Console.
         Console::Write( "{0}: ", fInfo->Name );

         // Write the hash value to the Console.
         PrintByteArray( hashValue );

         // Close the file.
         fileStream->Close();
      }
      return 0;
   }
   catch ( DirectoryNotFoundException^ ) 
   {
      Console::WriteLine( "Error: The directory specified could not be found." );
   }
   catch ( IOException^ ) 
   {
      Console::WriteLine( "Error: A file in the directory could not be accessed." );
   }

}
using System;
using System.IO;
using System.Security.Cryptography;

public class HashDirectory
{
    public static void Main(String[] args)
    {
        if (args.Length < 1)
        {
            Console.WriteLine("No directory selected.");
            return;
        }

        string directory = args[0];
        if (Directory.Exists(directory))
        {
            // Create a DirectoryInfo object representing the specified directory.
           var dir = new DirectoryInfo(directory);
            // Get the FileInfo objects for every file in the directory.
            FileInfo[] files = dir.GetFiles();
            // Initialize a SHA256 hash object.
            using (SHA256 mySHA256 = SHA256.Create())
            {
                // Compute and print the hash values for each file in directory.
                foreach (FileInfo fInfo in files)
                {
                    try { 
                        // Create a fileStream for the file.
                        FileStream fileStream = fInfo.Open(FileMode.Open);
                        // Be sure it's positioned to the beginning of the stream.
                        fileStream.Position = 0;
                        // Compute the hash of the fileStream.
                        byte[] hashValue = mySHA256.ComputeHash(fileStream);
                        // Write the name and hash value of the file to the console.
                        Console.Write($"{fInfo.Name}: ");
                        PrintByteArray(hashValue);
                        // Close the file.
                        fileStream.Close();
                    }
                    catch (IOException e) {
                        Console.WriteLine($"I/O Exception: {e.Message}");
                    }
                    catch (UnauthorizedAccessException e) {
                        Console.WriteLine($"Access Exception: {e.Message}");
                    }
                }
            }
        }
        else
        {
            Console.WriteLine("The directory specified could not be found.");
        }
    }

    // Display the byte array in a readable format.
    public static void PrintByteArray(byte[] array)
    {
        for (int i = 0; i < array.Length; i++)
        {
            Console.Write($"{array[i]:X2}");
            if ((i % 4) == 3) Console.Write(" ");
        }
        Console.WriteLine();
    }
}
Imports System.IO
Imports System.Security.Cryptography

Public Module HashDirectory

    Public Sub Main(ByVal args() As String)
        If args.Length < 1 Then
            Console.WriteLine("No directory selected")
            Return
        End If

        Dim targetDirectory As String = args(0)
        If Directory.Exists(targetDirectory) Then
            ' Create a DirectoryInfo object representing the specified directory.
            Dim dir As New DirectoryInfo(targetDirectory)
            ' Get the FileInfo objects for every file in the directory.
            Dim files As FileInfo() = dir.GetFiles()
            ' Initialize a SHA256 hash object.
            Using mySHA256 As SHA256 = SHA256.Create()
                ' Compute and print the hash values for each file in directory.
                For Each fInfo  As FileInfo In files
                    Try
                        ' Create a fileStream for the file.
                        Dim fileStream = fInfo.Open(FileMode.Open)
                        ' Be sure it's positioned to the beginning of the stream.
                        fileStream.Position = 0
                        ' Compute the hash of the fileStream.
                        Dim hashValue() As Byte = mySHA256.ComputeHash(fileStream)
                        ' Write the name of the file to the Console.
                        Console.Write(fInfo.Name + ": ")
                        ' Write the hash value to the Console.
                        PrintByteArray(hashValue)
                        ' Close the file.
                        fileStream.Close()
                    Catch e As IOException
                        Console.WriteLine($"I/O Exception: {e.Message}")
                    Catch e As UnauthorizedAccessException 
                        Console.WriteLine($"Access Exception: {e.Message}")
                    End Try    
                Next 
            End Using
        Else
           Console.WriteLine("The directory specified could not be found.")
        End If
    End Sub

    ' Print the byte array in a readable format.
    Public Sub PrintByteArray(array() As Byte)
        For i As Integer = 0 To array.Length - 1
            Console.Write($"{array(i):X2}")
            If i Mod 4 = 3 Then
                Console.Write(" ")
            End If
        Next 
        Console.WriteLine()

    End Sub 
End Module

Uwagi

Skrót jest używany jako unikatowa wartość stałego rozmiaru reprezentująca dużą ilość danych.The hash is used as a unique value of fixed size representing a large amount of data. Skróty dwóch zestawów danych powinny być takie same, jak i tylko wtedy, gdy odpowiednie dane również pasują do siebie.Hashes of two sets of data should match if and only if the corresponding data also matches. Niewielkie zmiany w danych powodują duże nieprzewidywalne zmiany w skrócie.Small changes to the data result in large unpredictable changes in the hash.

Rozmiar skrótu dla algorytmu SHA256 to 256 bitów.The hash size for the SHA256 algorithm is 256 bits.

Jest to Klasa abstrakcyjna.This is an abstract class.

Konstruktory

SHA256()

Inicjuje nowe wystąpienie klasy SHA256.Initializes a new instance of SHA256.

Pola

HashSizeValue

Przedstawia rozmiar obliczanego kodu skrótu w bitach.Represents the size, in bits, of the computed hash code.

(Odziedziczone po HashAlgorithm)
HashValue

Reprezentuje wartość obliczanego kodu skrótu.Represents the value of the computed hash code.

(Odziedziczone po HashAlgorithm)
State

Reprezentuje stan obliczeń skrótu.Represents the state of the hash computation.

(Odziedziczone po HashAlgorithm)

Właściwości

CanReuseTransform

Pobiera wartość wskazującą, czy bieżące przekształcenie może być ponownie używane.Gets a value indicating whether the current transform can be reused.

(Odziedziczone po HashAlgorithm)
CanTransformMultipleBlocks

Gdy jest zastępowany w klasie pochodnej, pobiera wartość wskazującą, czy można przekształcać wiele bloków.When overridden in a derived class, gets a value indicating whether multiple blocks can be transformed.

(Odziedziczone po HashAlgorithm)
Hash

Pobiera wartość obliczanego kodu skrótu.Gets the value of the computed hash code.

(Odziedziczone po HashAlgorithm)
HashSize

Pobiera rozmiar obliczanego kodu skrótu w bitach.Gets the size, in bits, of the computed hash code.

(Odziedziczone po HashAlgorithm)
InputBlockSize

Gdy jest zastępowany w klasie pochodnej, pobiera rozmiar bloku danych wejściowych.When overridden in a derived class, gets the input block size.

(Odziedziczone po HashAlgorithm)
OutputBlockSize

Gdy jest zastępowany w klasie pochodnej, pobiera rozmiar bloku wyjściowego.When overridden in a derived class, gets the output block size.

(Odziedziczone po HashAlgorithm)

Metody

Clear()

Zwalnia wszystkie zasoby używane przez klasę HashAlgorithm.Releases all resources used by the HashAlgorithm class.

(Odziedziczone po HashAlgorithm)
ComputeHash(Byte[])

Oblicza wartość skrótu dla określonej tablicy bajtów.Computes the hash value for the specified byte array.

(Odziedziczone po HashAlgorithm)
ComputeHash(Byte[], Int32, Int32)

Oblicza wartość skrótu dla określonego regionu określonej tablicy bajtów.Computes the hash value for the specified region of the specified byte array.

(Odziedziczone po HashAlgorithm)
ComputeHash(Stream)

Oblicza wartość skrótu dla określonego obiektu Stream.Computes the hash value for the specified Stream object.

(Odziedziczone po HashAlgorithm)
Create()

Tworzy wystąpienie domyślnej implementacji SHA256.Creates an instance of the default implementation of SHA256.

Create(String)

Tworzy wystąpienie określonej implementacji SHA256.Creates an instance of a specified implementation of SHA256.

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy HashAlgorithm.Releases all resources used by the current instance of the HashAlgorithm class.

(Odziedziczone po HashAlgorithm)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element HashAlgorithm i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources.

(Odziedziczone po HashAlgorithm)
Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.Determines whether the specified object is equal to the current object.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.Serves as the default hash function.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.Gets the Type of the current instance.

(Odziedziczone po Object)
HashCore(Byte[], Int32, Int32)

Gdy jest zastępowany w klasie pochodnej, kieruje dane zapisane w obiekcie do algorytmu wyznaczania wartości skrótu na potrzeby obliczania skrótu.When overridden in a derived class, routes data written to the object into the hash algorithm for computing the hash.

(Odziedziczone po HashAlgorithm)
HashCore(ReadOnlySpan<Byte>)

Przekierowuje dane zapisane w obiekcie do algorytmu wyznaczania wartości skrótu służącego do obliczania skrótu.Routes data written to the object into the hash algorithm for computing the hash.

(Odziedziczone po HashAlgorithm)
HashFinal()

Gdy jest zastępowany w klasie pochodnej, kończy obliczenia skrótu po ostatnim przetwarzaniu danych przez algorytm wyznaczania wartości skrótu.When overridden in a derived class, finalizes the hash computation after the last data is processed by the cryptographic hash algorithm.

(Odziedziczone po HashAlgorithm)
Initialize()

Resetuje algorytm wyznaczania wartości skrótu do stanu początkowego.Resets the hash algorithm to its initial state.

(Odziedziczone po HashAlgorithm)
MemberwiseClone()

Tworzy skróconą kopię bieżącego Object.Creates a shallow copy of the current Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg, który reprezentuje bieżący obiekt.Returns a string that represents the current object.

(Odziedziczone po Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32)

Oblicza wartość skrótu dla określonego regionu tablicy bajtów wejściowych i kopiuje określony region tablicy bajtów wejściowych do określonego regionu tablicy bajtów wyjściowych.Computes the hash value for the specified region of the input byte array and copies the specified region of the input byte array to the specified region of the output byte array.

(Odziedziczone po HashAlgorithm)
TransformFinalBlock(Byte[], Int32, Int32)

Oblicza wartość skrótu dla określonego regionu określonej tablicy bajtów.Computes the hash value for the specified region of the specified byte array.

(Odziedziczone po HashAlgorithm)
TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

Próbuje obliczyć wartość skrótu dla określonej tablicy bajtów.Attempts to compute the hash value for the specified byte array.

(Odziedziczone po HashAlgorithm)
TryHashFinal(Span<Byte>, Int32)

Podejmuje próbę sfinalizowania obliczeń skrótu po przetworzeniu ostatnich danych przez algorytm wyznaczania wartości skrótu.Attempts to finalize the hash computation after the last data is processed by the hash algorithm.

(Odziedziczone po HashAlgorithm)

Jawne implementacje interfejsu

IDisposable.Dispose()

Zwalnia zasoby niezarządzane używane przez element HashAlgorithm i opcjonalnie zwalnia zasoby zarządzane.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources.

(Odziedziczone po HashAlgorithm)

Dotyczy

Zobacz też