SHA256 Classe

Definição

Calcula o SHA256 hash dos dados de entrada.

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
Herança
Derivado
Atributos

Exemplos

O exemplo a seguir calcula o hash SHA-256 para todos os arquivos em um diretório.

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

Comentários

O hash é usado como um valor exclusivo de tamanho fixo que representa uma grande quantidade de dados. Hashes de dois conjuntos de dados devem corresponder se e somente se os dados correspondentes também corresponderem. Pequenas alterações nos dados resultam em grandes alterações imprevisíveis no hash.

O tamanho do hash para o SHA256 algoritmo é de 256 bits.

Esta é uma classe abstrata.

Construtores

Nome Description
SHA256()

Inicializa uma nova instância de SHA256.

Campos

Nome Description
HashSizeValue

Representa o tamanho, em bits, do código hash computado.

(Herdado de HashAlgorithm)
HashValue

Representa o valor do código hash computado.

(Herdado de HashAlgorithm)
State

Representa o estado da computação de hash.

(Herdado de HashAlgorithm)

Propriedades

Nome Description
CanReuseTransform

Obtém um valor que indica se a transformação atual pode ser reutilizado.

(Herdado de HashAlgorithm)
CanTransformMultipleBlocks

Quando substituído em uma classe derivada, obtém um valor que indica se vários blocos podem ser transformados.

(Herdado de HashAlgorithm)
Hash

Obtém o valor do código hash computado.

(Herdado de HashAlgorithm)
HashSize

Obtém o tamanho, em bits, do código hash computado.

(Herdado de HashAlgorithm)
InputBlockSize

Quando substituído em uma classe derivada, obtém o tamanho do bloco de entrada.

(Herdado de HashAlgorithm)
OutputBlockSize

Quando substituído em uma classe derivada, obtém o tamanho do bloco de saída.

(Herdado de HashAlgorithm)

Métodos

Nome Description
Clear()

Libera todos os recursos usados pela HashAlgorithm classe.

(Herdado de HashAlgorithm)
ComputeHash(Byte[], Int32, Int32)

Calcula o valor de hash para a região especificada da matriz de bytes especificada.

(Herdado de HashAlgorithm)
ComputeHash(Byte[])

Calcula o valor de hash para a matriz de bytes especificada.

(Herdado de HashAlgorithm)
ComputeHash(Stream)

Calcula o valor de hash para o objeto especificado Stream .

(Herdado de HashAlgorithm)
Create()

Cria uma instância da implementação padrão de SHA256.

Create(String)

Cria uma instância de uma implementação especificada de SHA256.

Dispose()

Libera todos os recursos usados pela instância atual da HashAlgorithm classe.

(Herdado de HashAlgorithm)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo HashAlgorithm e, opcionalmente, libera os recursos gerenciados.

(Herdado de HashAlgorithm)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HashCore(Byte[], Int32, Int32)

Quando substituído em uma classe derivada, roteia os dados gravados para o objeto no algoritmo de hash para calcular o hash.

(Herdado de HashAlgorithm)
HashCore(ReadOnlySpan<Byte>)

Roteia dados gravados para o objeto no algoritmo de hash para calcular o hash.

(Herdado de HashAlgorithm)
HashFinal()

Quando substituído em uma classe derivada, finaliza a computação de hash depois que os últimos dados são processados pelo algoritmo de hash criptográfico.

(Herdado de HashAlgorithm)
Initialize()

Redefine o algoritmo de hash para seu estado inicial.

(Herdado de HashAlgorithm)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32)

Calcula o valor de hash para a região especificada da matriz de bytes de entrada e copia a região especificada da matriz de bytes de entrada para a região especificada da matriz de bytes de saída.

(Herdado de HashAlgorithm)
TransformFinalBlock(Byte[], Int32, Int32)

Calcula o valor de hash para a região especificada da matriz de bytes especificada.

(Herdado de HashAlgorithm)
TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

Tenta calcular o valor de hash para a matriz de bytes especificada.

(Herdado de HashAlgorithm)
TryHashFinal(Span<Byte>, Int32)

Tenta finalizar a computação de hash depois que os últimos dados são processados pelo algoritmo de hash.

(Herdado de HashAlgorithm)

Implantações explícitas de interface

Nome Description
IDisposable.Dispose()

Libera os recursos não gerenciados usados pelo HashAlgorithm e, opcionalmente, libera os recursos gerenciados.

(Herdado de HashAlgorithm)

Aplica-se a

Confira também