Поделиться через


HashAlgorithm Класс

Определение

Представляет базовый класс, из которого создаются все реализации криптографических хэш-алгоритмов.

public ref class HashAlgorithm abstract : IDisposable, System::Security::Cryptography::ICryptoTransform
public ref class HashAlgorithm abstract : IDisposable
public ref class HashAlgorithm abstract : System::Security::Cryptography::ICryptoTransform
public abstract class HashAlgorithm : IDisposable, System.Security.Cryptography.ICryptoTransform
public abstract class HashAlgorithm : IDisposable
public abstract class HashAlgorithm : System.Security.Cryptography.ICryptoTransform
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class HashAlgorithm : System.Security.Cryptography.ICryptoTransform
type HashAlgorithm = class
    interface IDisposable
    interface ICryptoTransform
type HashAlgorithm = class
    interface 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
Public MustInherit Class HashAlgorithm
Implements ICryptoTransform, IDisposable
Public MustInherit Class HashAlgorithm
Implements IDisposable
Public MustInherit Class HashAlgorithm
Implements ICryptoTransform
Наследование
HashAlgorithm
Производный
Атрибуты
Реализации

Примеры

В следующем примере кода вычисляется SHA256 хэш для массива. В этом примере предполагается, что существует предопределенный массив байтов dataArray[]. SHA256является производным классом .HashAlgorithm

HashAlgorithm^ sha = SHA256::Create();
array<Byte>^ result = sha->ComputeHash( dataArray );
HashAlgorithm sha = SHA256.Create();
byte[] result = sha.ComputeHash(dataArray);
Dim sha As SHA256 = SHA256.Create()
Dim result As Byte() = sha.ComputeHash(dataArray)

Комментарии

Хэш-функции являются фундаментальными для современной криптографии. Эти функции сопоставляют двоичные строки произвольной длины с небольшими двоичными строками фиксированной длины, называемыми хэш-значениями. Криптографическая хэш-функция имеет свойство, указывающее, что найти два разных входных данных, хэшируемых в одно и то же значение, невозможно. Хэш-функции обычно используются с цифровыми подписями и для обеспечения целостности данных.

Хэш используется в качестве уникального значения фиксированного размера, представляющего большой объем данных. Хэши двух наборов данных должны совпадать, если соответствующие данные также совпадают. Небольшие изменения данных приводят к большим непредсказуемым изменениям хэша.

Из-за проблем с SHA1 корпорация Майкрософт рекомендует использовать модель безопасности на основе SHA256 или более высокого уровня.

Примечания для тех, кто реализует этот метод

При наследовании HashAlgorithm от класса необходимо переопределить следующие члены: HashCore(Byte[], Int32, Int32) и HashFinal().

Конструкторы

HashAlgorithm()

Инициализирует новый экземпляр класса HashAlgorithm.

Поля

HashSizeValue

Представляет размер вычисленного хэш-кода в битах.

HashValue

Представляет значение вычисляемого хэш-кода.

State

Представляет состояние процесса вычисления хэша.

Свойства

CanReuseTransform

Получает значение, указывающее на возможность повторного использования текущего преобразования.

CanTransformMultipleBlocks

Если переопределено в производном классе, возвращает значение, указывающее, возможно ли преобразование нескольких блоков.

Hash

Получает значение вычисленного хэш-кода.

HashSize

Получает размер вычисленного хэш-кода в битах.

InputBlockSize

При переопределении в производном классе получает размер входного блока.

OutputBlockSize

При переопределении в производном классе получает размер выходного блока.

Методы

Clear()

Освобождает все ресурсы, используемые классом HashAlgorithm.

ComputeHash(Byte[])

Вычисляет хэш-значение для заданного массива байтов.

ComputeHash(Byte[], Int32, Int32)

Вычисляет хэш-значение для заданной области заданного массива байтов.

ComputeHash(Stream)

Вычисляет хэш-значение для заданного объекта Stream.

ComputeHashAsync(Stream, CancellationToken)

Асинхронно вычисляет хэш-значение для заданного объекта Stream.

Create()
Устаревшие..
Устаревшие..

Создает экземпляр реализации по умолчанию хэш-алгоритма.

Create(String)
Устаревшие..

Создает экземпляр заданной реализации хэш-алгоритма.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса HashAlgorithm.

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом HashAlgorithm, а при необходимости освобождает также управляемые ресурсы.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
HashCore(Byte[], Int32, Int32)

При переопределении в производном классе передает данные, записанные в объект, на вход хэш-алгоритма для вычисления хэша.

HashCore(ReadOnlySpan<Byte>)

Передает записываемые в объект данные в хэш-алгоритм для вычисления хэша.

HashFinal()

Если переопределено в производном классе, завершает вычисление хэша после обработки последних данных криптографическим хэш-алгоритмом.

Initialize()

Сбрасывает хэш-алгоритм в исходное состояние.

MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)
TransformBlock(Byte[], Int32, Int32, Byte[], Int32)

Вычисляет хэш-значение для заданной области входного массива байтов и копирует указанную область входного массива байтов в заданную область выходного массива байтов.

TransformFinalBlock(Byte[], Int32, Int32)

Вычисляет хэш-значение для заданной области заданного массива байтов.

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

Пытается вычислить хэш-значение для заданного массива байтов.

TryHashFinal(Span<Byte>, Int32)

Пытается завершить вычисление хэша после обработки последних данных хэш-алгоритмом.

Явные реализации интерфейса

IDisposable.Dispose()

Освобождает неуправляемые ресурсы, используемые объектом HashAlgorithm, а при необходимости освобождает также управляемые ресурсы.

Применяется к

См. также раздел