SHA256 Classe

Definizione

Calcola l'hash SHA256 per i dati di input.

public ref class SHA256 abstract : System::Security::Cryptography::HashAlgorithm
public abstract class SHA256 : System.Security.Cryptography.HashAlgorithm
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class SHA256 : System.Security.Cryptography.HashAlgorithm
type SHA256 = class
    inherit HashAlgorithm
[<System.Runtime.InteropServices.ComVisible(true)>]
type SHA256 = class
    inherit HashAlgorithm
Public MustInherit Class SHA256
Inherits HashAlgorithm
Ereditarietà
Derivato
Attributi

Esempio

Nell'esempio seguente viene calcolato l'hash SHA-256 per tutti i file in una directory.

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)
                {
                    using (FileStream fileStream = fInfo.Open(FileMode.Open))
                    {
                        try
                        {
                            // Create a fileStream for the file.
                            // 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);
                        }
                        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

Commenti

L'hash viene usato come valore univoco di dimensioni fisse che rappresentano una grande quantità di dati. Gli hash di due set di dati devono corrispondere se e solo se i dati corrispondenti corrispondono anche. Piccole modifiche apportate ai dati generano modifiche imprevedibili di grandi dimensioni nell'hash.

Le dimensioni hash per l'algoritmo SHA256 sono di 256 bit.

Si tratta di una classe astratta.

Costruttori

Nome Descrizione
SHA256()

Inizializza una nuova istanza di SHA256.

Campi

Nome Descrizione
HashSizeInBits

Dimensioni hash prodotte dall'algoritmo SHA-256, in bit.

HashSizeInBytes

Dimensioni hash prodotte dall'algoritmo SHA-256, in byte.

HashSizeValue

Rappresenta le dimensioni, in bit, del codice hash calcolato.

(Ereditato da HashAlgorithm)
HashValue

Rappresenta il valore del codice hash calcolato.

(Ereditato da HashAlgorithm)
State

Rappresenta lo stato del calcolo hash.

(Ereditato da HashAlgorithm)

Proprietà

Nome Descrizione
CanReuseTransform

Ottiene un valore che indica se la trasformazione corrente può essere riutilizzata.

(Ereditato da HashAlgorithm)
CanTransformMultipleBlocks

In caso di override in una classe derivata, ottiene un valore che indica se è possibile trasformare più blocchi.

(Ereditato da HashAlgorithm)
Hash

Ottiene il valore del codice hash calcolato.

(Ereditato da HashAlgorithm)
HashSize

Ottiene le dimensioni, in bit, del codice hash calcolato.

(Ereditato da HashAlgorithm)
InputBlockSize

In caso di override in una classe derivata, ottiene le dimensioni del blocco di input.

(Ereditato da HashAlgorithm)
OutputBlockSize

Quando sottoposto a override in una classe derivata, ottiene le dimensioni del blocco di output.

(Ereditato da HashAlgorithm)

Metodi

Nome Descrizione
Clear()

Rilascia tutte le risorse usate dalla HashAlgorithm classe .

(Ereditato da HashAlgorithm)
ComputeHash(Byte[], Int32, Int32)

Calcola il valore hash per l'area specificata della matrice di byte specificata.

(Ereditato da HashAlgorithm)
ComputeHash(Byte[])

Calcola il valore hash per la matrice di byte specificata.

(Ereditato da HashAlgorithm)
ComputeHash(Stream)

Calcola il valore hash per l'oggetto specificato Stream .

(Ereditato da HashAlgorithm)
ComputeHashAsync(Stream, CancellationToken)

Calcola in modo asincrono il valore hash per l'oggetto specificato Stream .

(Ereditato da HashAlgorithm)
Create()

Crea un'istanza dell'implementazione predefinita di SHA256.

Create(String)
Obsoleti.

Crea un'istanza di un'implementazione specificata di SHA256.

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della HashAlgorithm classe .

(Ereditato da HashAlgorithm)
Dispose(Boolean)

Rilascia le risorse non gestite usate da HashAlgorithm e, facoltativamente, rilascia le risorse gestite.

(Ereditato da HashAlgorithm)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
HashCore(Byte[], Int32, Int32)

In caso di override in una classe derivata, instrada i dati scritti nell'oggetto nell'algoritmo hash per calcolare l'hash.

(Ereditato da HashAlgorithm)
HashCore(ReadOnlySpan<Byte>)

Indirizza i dati scritti nell'oggetto nell'algoritmo hash per calcolare l'hash.

(Ereditato da HashAlgorithm)
HashData(Byte[])

Calcola l'hash dei dati usando l'algoritmo SHA-256.

HashData(ReadOnlySpan<Byte>, Span<Byte>)

Calcola l'hash dei dati usando l'algoritmo SHA-256.

HashData(ReadOnlySpan<Byte>)

Calcola l'hash dei dati usando l'algoritmo SHA-256.

HashData(Stream, Span<Byte>)

Calcola l'hash di un flusso usando l'algoritmo SHA-256.

HashData(Stream)

Calcola l'hash di un flusso usando l'algoritmo SHA-256.

HashDataAsync(Stream, CancellationToken)

Calcola in modo asincrono l'hash di un flusso usando l'algoritmo SHA-256.

HashDataAsync(Stream, Memory<Byte>, CancellationToken)

Calcola in modo asincrono l'hash di un flusso usando l'algoritmo SHA-256.

HashFinal()

Quando sottoposto a override in una classe derivata, finalizza il calcolo hash dopo l'elaborazione degli ultimi dati dall'algoritmo hash crittografico.

(Ereditato da HashAlgorithm)
Initialize()

Reimposta lo stato iniziale dell'algoritmo hash.

(Ereditato da HashAlgorithm)
MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32)

Calcola il valore hash per l'area specificata della matrice di byte di input e copia l'area specificata della matrice di byte di input nell'area specificata della matrice di byte di output.

(Ereditato da HashAlgorithm)
TransformFinalBlock(Byte[], Int32, Int32)

Calcola il valore hash per l'area specificata della matrice di byte specificata.

(Ereditato da HashAlgorithm)
TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

Tenta di calcolare il valore hash per la matrice di byte specificata.

(Ereditato da HashAlgorithm)
TryHashData(ReadOnlySpan<Byte>, Span<Byte>, Int32)

Tenta di calcolare l'hash dei dati usando l'algoritmo SHA-256.

TryHashFinal(Span<Byte>, Int32)

Tenta di finalizzare il calcolo hash dopo l'elaborazione degli ultimi dati dall'algoritmo hash.

(Ereditato da HashAlgorithm)

Implementazioni dell'interfaccia esplicita

Nome Descrizione
IDisposable.Dispose()

Rilascia le risorse non gestite usate da HashAlgorithm e, facoltativamente, rilascia le risorse gestite.

(Ereditato da HashAlgorithm)

Si applica a

Vedi anche