HashAlgorithm Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje základní třídu, ze které musí být odvozeny všechny implementace kryptografických hash algoritmů.
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
- Dědičnost
-
HashAlgorithm
- Odvozené
- Atributy
- Implementuje
Příklady
Následující příklad kódu vypočítá SHA256 hodnotu hash pro pole. Tento příklad předpokládá, že existuje předdefinované bajtové pole dataArray[].
SHA256 je odvozená třída HashAlgorithm.
HashAlgorithm sha = SHA256.Create();
byte[] result = sha.ComputeHash(dataArray);
Dim sha As SHA256 = SHA256.Create()
Dim result As Byte() = sha.ComputeHash(dataArray)
Poznámky
Funkce hash jsou zásadní pro moderní kryptografii. Tyto funkce mapují binární řetězce libovolné délky na malé binární řetězce pevné délky, označované jako hodnoty hash. Kryptografická funkce hash má vlastnost, že je výpočetně neproveditelná pro nalezení dvou jedinečných vstupů, které hashují stejnou hodnotu. Funkce hash se běžně používají s digitálními podpisy a pro integritu dat.
Hodnota hash se používá jako jedinečná hodnota pevné velikosti představující velké množství dat. Hodnoty hash dvou sad dat by se měly shodovat, pokud se odpovídající data shodují. Malé změny dat vedou k velkým nepředvídatelným změnám hodnoty hash.
Vzhledem k problémům s kolizemi u SHA-1 Microsoft doporučuje model zabezpečení založený na algoritmu SHA-256 nebo lepším.
Poznámky pro implementátory
Když dědíte z HashAlgorithm třídy, musíte přepsat následující členy: HashCore(Byte[], Int32, Int32) a HashFinal().
Konstruktory
| Name | Description |
|---|---|
| HashAlgorithm() |
Inicializuje novou instanci HashAlgorithm třídy. |
Pole
| Name | Description |
|---|---|
| HashSizeValue |
Představuje velikost vypočítaného hashového kódu v bitech. |
| HashValue |
Představuje hodnotu vypočítaného kódu hash. |
| State |
Představuje stav výpočtu hodnoty hash. |
Vlastnosti
| Name | Description |
|---|---|
| CanReuseTransform |
Získá hodnotu určující, zda aktuální transformace lze znovu použít. |
| CanTransformMultipleBlocks |
Při přepsání v odvozené třídě získá hodnotu označující, zda lze transformovat více bloků. |
| Hash |
Získá hodnotu vypočítaného hash kódu. |
| HashSize |
Získá velikost vypočítaného hash kódu v bitech. |
| InputBlockSize |
Při přepsání v odvozené třídě získá velikost vstupního bloku. |
| OutputBlockSize |
Při přepsání v odvozené třídě získá velikost výstupního bloku. |
Metody
| Name | Description |
|---|---|
| Clear() |
Uvolní všechny prostředky používané HashAlgorithm třídou. |
| ComputeHash(Byte[], Int32, Int32) |
Vypočítá hodnotu hash pro zadanou oblast zadaného pole bajtů. |
| ComputeHash(Byte[]) |
Vypočítá hodnotu hash pro zadané pole bajtů. |
| ComputeHash(Stream) |
Vypočítá hodnotu hash pro zadaný Stream objekt. |
| Create() |
Vytvoří instanci výchozí implementace hash algoritmu. |
| Create(String) |
Vytvoří instanci zadané implementace algoritmu hash. |
| Dispose() |
Uvolní všechny prostředky používané aktuální instancí HashAlgorithm třídy. |
| Dispose(Boolean) |
Uvolní nespravované prostředky používané HashAlgorithm a volitelně uvolní spravované prostředky. |
| Equals(Object) |
Určí, zda se zadaný objekt rovná aktuálnímu objektu. (Zděděno od Object) |
| GetHashCode() |
Slouží jako výchozí funkce hash. (Zděděno od Object) |
| GetType() |
Získá Type aktuální instance. (Zděděno od Object) |
| HashCore(Byte[], Int32, Int32) |
Při přepsání v odvozené třídě směruje data zapsaná do objektu do algoritmu hash pro výpočet hodnoty hash. |
| HashCore(ReadOnlySpan<Byte>) |
Směruje data zapsaná do objektu do algoritmu hash pro výpočet hodnoty hash. |
| HashFinal() |
Při přepsání v odvozené třídě dokončí výpočet hash po posledním zpracování dat kryptografickým hashovacím algoritmem. |
| Initialize() |
Resetuje hashovací algoritmus do počátečního stavu. |
| MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Object. (Zděděno od Object) |
| ToString() |
Vrátí řetězec, který představuje aktuální objekt. (Zděděno od Object) |
| TransformBlock(Byte[], Int32, Int32, Byte[], Int32) |
Vypočítá hodnotu hash pro zadanou oblast vstupního bajtového pole a zkopíruje zadanou oblast vstupního bajtového pole do zadané oblasti výstupního bajtového pole. |
| TransformFinalBlock(Byte[], Int32, Int32) |
Vypočítá hodnotu hash pro zadanou oblast zadaného pole bajtů. |
| TryComputeHash(ReadOnlySpan<Byte>, Span<Byte>, Int32) |
Pokusí se vypočítat hodnotu hash pro zadané bajtové pole. |
| TryHashFinal(Span<Byte>, Int32) |
Pokusí se dokončit výpočet hash po zpracování posledních dat algoritmem hash. |
Explicitní implementace rozhraní
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Uvolní nespravované prostředky používané HashAlgorithm a volitelně uvolní spravované prostředky. |