HashAlgorithm Clase

Definición

Representa la clase base de la que deben derivarse todas las implementaciones de algoritmos hash criptográficos.

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
Herencia
HashAlgorithm
Derivado
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se calcula el SHA256 hash de una matriz. En este ejemplo se supone que hay una matriz dataArray[]de bytes predefinida . SHA256 es una clase derivada de HashAlgorithm.

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

Comentarios

Las funciones hash son fundamentales para la criptografía moderna. Estas funciones asignan cadenas binarias de una longitud arbitraria a cadenas binarias pequeñas de una longitud fija, conocidas como valores hash. Una función hash criptográfica tiene la propiedad de que es computacionalmente inviable encontrar dos entradas distintas que hashen el mismo valor. Las funciones hash se usan normalmente con firmas digitales y para la integridad de los datos.

El hash se usa como un valor único de tamaño fijo que representa una gran cantidad de datos. Los hashes de dos conjuntos de datos deben coincidir si los datos correspondientes también coinciden. Los pequeños cambios en los datos producen grandes cambios imprevisibles en el hash.

Debido a problemas de colisión con SHA-1, Microsoft recomienda un modelo de seguridad basado en SHA-256 o superior.

Notas a los implementadores

Al heredar de la HashAlgorithm clase , debe invalidar los miembros siguientes: HashCore(Byte[], Int32, Int32) y HashFinal().

Constructores

Nombre Description
HashAlgorithm()

Inicializa una nueva instancia de la clase HashAlgorithm.

Campos

Nombre Description
HashSizeValue

Representa el tamaño, en bits, del código hash calculado.

HashValue

Representa el valor del código hash calculado.

State

Representa el estado del cálculo hash.

Propiedades

Nombre Description
CanReuseTransform

Obtiene un valor que indica si se puede reutilizar la transformación actual.

CanTransformMultipleBlocks

Cuando se reemplaza en una clase derivada, obtiene un valor que indica si se pueden transformar varios bloques.

Hash

Obtiene el valor del código hash calculado.

HashSize

Obtiene el tamaño, en bits, del código hash calculado.

InputBlockSize

Cuando se reemplaza en una clase derivada, obtiene el tamaño del bloque de entrada.

OutputBlockSize

Cuando se reemplaza en una clase derivada, obtiene el tamaño del bloque de salida.

Métodos

Nombre Description
Clear()

Libera todos los recursos usados por la HashAlgorithm clase .

ComputeHash(Byte[], Int32, Int32)

Calcula el valor hash de la región especificada de la matriz de bytes especificada.

ComputeHash(Byte[])

Calcula el valor hash de la matriz de bytes especificada.

ComputeHash(Stream)

Calcula el valor hash del objeto especificado Stream .

Create()

Crea una instancia de la implementación predeterminada de un algoritmo hash.

Create(String)

Crea una instancia de la implementación especificada de un algoritmo hash.

Dispose()

Libera todos los recursos usados por la instancia actual de la HashAlgorithm clase .

Dispose(Boolean)

Libera los recursos no administrados utilizados por HashAlgorithm y, opcionalmente, libera los recursos administrados.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

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

Cuando se invalida en una clase derivada, enruta los datos escritos al objeto en el algoritmo hash para calcular el hash.

HashCore(ReadOnlySpan<Byte>)

Enruta los datos escritos al objeto en el algoritmo hash para calcular el hash.

HashFinal()

Cuando se invalida en una clase derivada, finaliza el cálculo hash después de que el algoritmo hash criptográfico procese los últimos datos.

Initialize()

Restablece el algoritmo hash a su estado inicial.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve una cadena que representa el objeto actual.

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

Calcula el valor hash de la región especificada de la matriz de bytes de entrada y copia la región especificada de la matriz de bytes de entrada en la región especificada de la matriz de bytes de salida.

TransformFinalBlock(Byte[], Int32, Int32)

Calcula el valor hash de la región especificada de la matriz de bytes especificada.

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

Intenta calcular el valor hash de la matriz de bytes especificada.

TryHashFinal(Span<Byte>, Int32)

Intenta finalizar el cálculo hash después de que el algoritmo hash procese los últimos datos.

Implementaciones de interfaz explícitas

Nombre Description
IDisposable.Dispose()

Libera los recursos no administrados utilizados por HashAlgorithm y, opcionalmente, libera los recursos administrados.

Se aplica a

Consulte también