HashAlgorithm Klasa

Definicja

Reprezentuje klasę bazową, z której muszą pochodzić wszystkie implementacje algorytmów skrótu kryptograficznego.

public ref class HashAlgorithm abstract : System::Security::Cryptography::ICryptoTransform
public ref class HashAlgorithm abstract : IDisposable
public abstract class HashAlgorithm : System.Security.Cryptography.ICryptoTransform
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class HashAlgorithm : System.Security.Cryptography.ICryptoTransform
public abstract class HashAlgorithm : IDisposable
type HashAlgorithm = class
    interface ICryptoTransform
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type HashAlgorithm = class
    interface ICryptoTransform
    interface IDisposable
[<System.Runtime.InteropServices.ComVisible(true)>]
type HashAlgorithm = class
    interface IDisposable
    interface ICryptoTransform
type HashAlgorithm = class
    interface IDisposable
type HashAlgorithm = class
    interface IDisposable
    interface ICryptoTransform
Public MustInherit Class HashAlgorithm
Implements ICryptoTransform
Public MustInherit Class HashAlgorithm
Implements IDisposable
Dziedziczenie
HashAlgorithm
Pochodne
Atrybuty
Implementuje

Przykłady

Poniższy przykład kodu oblicza SHA256 skrót dla tablicy. W tym przykładzie przyjęto założenie, że istnieje wstępnie zdefiniowana tablica dataArray[]bajtów . SHA256 jest klasą pochodną klasy HashAlgorithm.

HashAlgorithm sha = SHA256.Create();
byte[] result = sha.ComputeHash(dataArray);
Dim sha As SHA256 = SHA256.Create()
Dim result As Byte() = sha.ComputeHash(dataArray)

Uwagi

Funkcje skrótu są fundamentalne dla nowoczesnej kryptografii. Te funkcje mapować ciągi binarne dowolnej długości na małe ciągi binarne o stałej długości, znane jako wartości skrótu. Funkcja skrótu kryptograficznego ma właściwość, którą można obliczać w celu znalezienia dwóch odrębnych danych wejściowych, które mają wartość skrótu. Funkcje skrótu są często używane z podpisami cyfrowymi i integralnością danych.

Skrót jest używany jako unikatowa wartość o stałym rozmiarze reprezentującym dużą ilość danych. Skróty dwóch zestawów danych powinny być zgodne, jeśli odpowiednie dane również są zgodne. Małe zmiany w danych powodują duże nieprzewidywalne zmiany skrótu.

Ze względu na problemy z kolizją z algorytmem SHA-1 firma Microsoft zaleca model zabezpieczeń oparty na algorytmie SHA-256 lub lepszym.

Notatki dotyczące implementowania

Po dziedziczeniu HashAlgorithm z klasy należy zastąpić następujące elementy członkowskie: HashCore(Byte[], Int32, Int32) i HashFinal().

Konstruktory

Nazwa Opis
HashAlgorithm()

Inicjuje nowe wystąpienie klasy HashAlgorithm.

Pola

Nazwa Opis
HashSizeValue

Reprezentuje rozmiar w bitach obliczonego kodu skrótu.

HashValue

Reprezentuje wartość obliczonego kodu skrótu.

State

Reprezentuje stan obliczeń skrótu.

Właściwości

Nazwa Opis
CanReuseTransform

Pobiera wartość wskazującą, czy można ponownie użyć bieżącej transformacji.

CanTransformMultipleBlocks

Po zastąpieniu w klasie pochodnej pobiera wartość wskazującą, czy można przekształcić wiele bloków.

Hash

Pobiera wartość obliczonego kodu skrótu.

HashSize

Pobiera rozmiar w bitach obliczonego kodu skrótu.

InputBlockSize

Po zastąpieniu w klasie pochodnej pobiera rozmiar bloku wejściowego.

OutputBlockSize

Po zastąpieniu w klasie pochodnej pobiera rozmiar bloku wyjściowego.

Metody

Nazwa Opis
Clear()

Zwalnia wszystkie zasoby używane przez klasę HashAlgorithm.

ComputeHash(Byte[], Int32, Int32)

Oblicza wartość skrótu dla określonego regionu określonej tablicy bajtów.

ComputeHash(Byte[])

Oblicza wartość skrótu dla określonej tablicy bajtów.

ComputeHash(Stream)

Oblicza wartość skrótu dla określonego Stream obiektu.

Create()

Tworzy wystąpienie domyślnej implementacji algorytmu skrótu.

Create(String)

Tworzy wystąpienie określonej implementacji algorytmu skrótu.

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie HashAlgorithm klasy.

Dispose(Boolean)

Zwalnia niezarządzane zasoby używane przez HashAlgorithm program i opcjonalnie zwalnia zarządzane zasoby.

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Pobiera Type bieżącego wystąpienia.

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

Po zastąpieniu w klasie pochodnej kieruje dane zapisywane do obiektu w algorytmie skrótu na potrzeby obliczania skrótu.

HashCore(ReadOnlySpan<Byte>)

Kieruje dane zapisywane do obiektu w algorytmie skrótu do obliczania skrótu.

HashFinal()

Po zastąpieniu w klasie pochodnej finalizuje obliczenia skrótu po przetworzeniu ostatnich danych przez algorytm skrótu kryptograficznego.

Initialize()

Resetuje algorytm skrótu do stanu początkowego.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Object.

(Odziedziczone po Object)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(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.

TransformFinalBlock(Byte[], Int32, Int32)

Oblicza wartość skrótu dla określonego regionu określonej tablicy bajtów.

TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32)

Próbuje obliczyć wartość skrótu dla określonej tablicy bajtów.

TryHashFinal(Span<Byte>, Int32)

Próbuje sfinalizować obliczenia skrótu po przetworzeniu ostatnich danych przez algorytm skrótu.

Jawne implementacje interfejsu

Nazwa Opis
IDisposable.Dispose()

Zwalnia niezarządzane zasoby używane przez HashAlgorithm program i opcjonalnie zwalnia zarządzane zasoby.

Dotyczy

Zobacz też