SHA256 Classe
Definição
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.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
Comentários
O hash é usado como um valor exclusivo de tamanho fixo que representa uma grande quantidade de dados.The hash is used as a unique value of fixed size representing a large amount of data. Hashes de dois conjuntos de dados devem corresponder se e somente se os dados correspondentes também corresponderem.Hashes of two sets of data should match if and only if the corresponding data also matches. Pequenas alterações nos dados resultam em grandes alterações imprevisíveis no hash.Small changes to the data result in large unpredictable changes in the hash.
O tamanho do hash para o SHA256 algoritmo é de 256 bits.The hash size for the SHA256 algorithm is 256 bits.
Esta é uma classe abstrata.This is an abstract class.
Construtores
| SHA256() |
Inicializa uma nova instância de SHA256.Initializes a new instance of SHA256. |
Campos
| HashSizeValue |
Representa o tamanho, em bits, do código hash calculado.Represents the size, in bits, of the computed hash code. (Herdado de HashAlgorithm) |
| HashValue |
Representa o valor do código hash computado.Represents the value of the computed hash code. (Herdado de HashAlgorithm) |
| State |
Representa o estado do cálculo de hash.Represents the state of the hash computation. (Herdado de HashAlgorithm) |
Propriedades
| CanReuseTransform |
Obtém um valor que indica se a transformação atual pode ser reutilizada.Gets a value indicating whether the current transform can be reused. (Herdado de HashAlgorithm) |
| CanTransformMultipleBlocks |
Quando substituído em uma classe derivada, obtém um valor que indica se vários blocos podem ser transformados.When overridden in a derived class, gets a value indicating whether multiple blocks can be transformed. (Herdado de HashAlgorithm) |
| Hash |
Obtém o valor do código hash computado.Gets the value of the computed hash code. (Herdado de HashAlgorithm) |
| HashSize |
Obtém o tamanho, em bits, do código hash computado.Gets the size, in bits, of the computed hash code. (Herdado de HashAlgorithm) |
| InputBlockSize |
Quando substituído em uma classe derivada, obtém o tamanho do bloco de entrada.When overridden in a derived class, gets the input block size. (Herdado de HashAlgorithm) |
| OutputBlockSize |
Quando substituído em uma classe derivada, obtém o tamanho do bloco de saída.When overridden in a derived class, gets the output block size. (Herdado de HashAlgorithm) |
Métodos
| Clear() |
Libera todos os recursos usados pela classe HashAlgorithm.Releases all resources used by the HashAlgorithm class. (Herdado de HashAlgorithm) |
| ComputeHash(Byte[]) |
Calcula o valor do hash da matriz de bytes especificada.Computes the hash value for the specified byte array. (Herdado de HashAlgorithm) |
| ComputeHash(Byte[], Int32, Int32) |
Calcula o valor de hash para a região especificada da matriz de bytes especificada.Computes the hash value for the specified region of the specified byte array. (Herdado de HashAlgorithm) |
| ComputeHash(Stream) |
Calcula o valor do hash do objeto Stream especificado.Computes the hash value for the specified Stream object. (Herdado de HashAlgorithm) |
| ComputeHashAsync(Stream, CancellationToken) |
Calcula assincronamente o valor do hash do objeto Stream especificado.Asynchronously computes the hash value for the specified Stream object. (Herdado de HashAlgorithm) |
| Create() |
Cria uma nova instância da implementação padrão do SHA256.Creates an instance of the default implementation of SHA256. |
| Create(String) |
Cria uma nova instância de uma implementação especificada de SHA256.Creates an instance of a specified implementation of SHA256. |
| Dispose() |
Libera todos os recursos usados pela instância atual da classe HashAlgorithm.Releases all resources used by the current instance of the HashAlgorithm class. (Herdado de HashAlgorithm) |
| Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo HashAlgorithm e opcionalmente libera os recursos gerenciados.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources. (Herdado de HashAlgorithm) |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual.Determines whether the specified object is equal to the current object. (Herdado de Object) |
| GetHashCode() |
Serve como a função de hash padrão.Serves as the default hash function. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual.Gets the Type of the current instance. (Herdado de Object) |
| HashCore(Byte[], Int32, Int32) |
Quando substituído em uma classe derivada, roteia os dados gravados no objeto para o algoritmo de hash para computar o hash.When overridden in a derived class, routes data written to the object into the hash algorithm for computing the hash. (Herdado de HashAlgorithm) |
| HashCore(ReadOnlySpan<Byte>) |
Roteia os dados gravados no objeto para o algoritmo de hash para cálculo do hash.Routes data written to the object into the hash algorithm for computing the hash. (Herdado de HashAlgorithm) |
| HashData(Byte[]) |
Computa o hash de dados usando o algoritmo SHA256.Computes the hash of data using the SHA256 algorithm. |
| HashData(ReadOnlySpan<Byte>) |
Computa o hash de dados usando o algoritmo SHA256.Computes the hash of data using the SHA256 algorithm. |
| HashData(ReadOnlySpan<Byte>, Span<Byte>) |
Computa o hash de dados usando o algoritmo SHA256.Computes the hash of data using the SHA256 algorithm. |
| HashFinal() |
Quando substituído em uma classe derivada, finaliza o cálculo de hash depois que os últimos dados são processados pelo algoritmo de hash de criptografia.When overridden in a derived class, finalizes the hash computation after the last data is processed by the cryptographic hash algorithm. (Herdado de HashAlgorithm) |
| Initialize() |
Redefine o algoritmo de hash para o estado inicial.Resets the hash algorithm to its initial state. (Herdado de HashAlgorithm) |
| MemberwiseClone() |
Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object. (Herdado de Object) |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual.Returns a string that represents the current object. (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.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. (Herdado de HashAlgorithm) |
| TransformFinalBlock(Byte[], Int32, Int32) |
Calcula o valor de hash para a região especificada da matriz de bytes especificada.Computes the hash value for the specified region of the specified byte array. (Herdado de HashAlgorithm) |
| TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) |
Tenta calcular o valor de hash para a matriz de bytes especificada.Attempts to compute the hash value for the specified byte array. (Herdado de HashAlgorithm) |
| TryHashData(ReadOnlySpan<Byte>, Span<Byte>, Int32) |
Tenta computar o hash de dados usando o algoritmo SHA256.Attempts to compute the hash of data using the SHA256 algorithm. |
| TryHashFinal(Span<Byte>, Int32) |
Tenta finalizar o cálculo de hash depois que os últimos dados são processados pelo algoritmo de hash.Attempts to finalize the hash computation after the last data is processed by the hash algorithm. (Herdado de HashAlgorithm) |
Implantações explícitas de interface
| IDisposable.Dispose() |
Libera os recursos não gerenciados usados pelo HashAlgorithm e opcionalmente libera os recursos gerenciados.Releases the unmanaged resources used by the HashAlgorithm and optionally releases the managed resources. (Herdado de HashAlgorithm) |