HashAlgorithm Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Представляет базовый класс, от которого должны быть производны все реализации алгоритмов шифрования хэша.
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
- Наследование
-
HashAlgorithm
- Производный
- Атрибуты
- Реализации
Примеры
В следующем примере кода вычисляется SHA256 хэш для массива. В этом примере предполагается, что существует предопределенный массив dataArray[]байтов.
SHA256 является производным классом HashAlgorithm.
HashAlgorithm sha = SHA256.Create();
byte[] result = sha.ComputeHash(dataArray);
Dim sha As SHA256 = SHA256.Create()
Dim result As Byte() = sha.ComputeHash(dataArray)
Комментарии
Хэш-функции являются фундаментальными для современной криптографии. Эти функции сопоставляют двоичные строки произвольной длины с небольшими двоичными строками фиксированной длины, известной как хэш-значения. Криптографическая хэш-функция имеет свойство, которое вычисляется, чтобы найти два разных входных данных, хэшированных в одно и то же значение. Хэш-функции обычно используются с цифровыми подписями и для целостности данных.
Хэш используется в качестве уникального значения фиксированного размера, представляющего большой объем данных. Хэши двух наборов данных должны совпадать, если соответствующие данные также совпадают. Небольшие изменения данных приводят к большим непредсказуемым изменениям хэша.
Из-за проблем с столкновением с SHA-1 корпорация Майкрософт рекомендует модель безопасности на основе SHA-256 или более поздней версии.
Примечания для тех, кто реализует этот метод
При наследовании от HashAlgorithm класса необходимо переопределить следующие члены: HashCore(Byte[], Int32, Int32) и HashFinal().
Конструкторы
| Имя | Описание |
|---|---|
| HashAlgorithm() |
Инициализирует новый экземпляр класса HashAlgorithm. |
Поля
| Имя | Описание |
|---|---|
| HashSizeValue |
Представляет размер в битах вычисляемого хэш-кода. |
| HashValue |
Представляет значение вычисляемого хэш-кода. |
| State |
Представляет состояние хэш-вычисления. |
Свойства
| Имя | Описание |
|---|---|
| CanReuseTransform |
Возвращает значение, указывающее, можно ли повторно использовать текущее преобразование. |
| CanTransformMultipleBlocks |
При переопределении в производном классе получает значение, указывающее, можно ли преобразовать несколько блоков. |
| Hash |
Возвращает значение вычисляемого хэш-кода. |
| HashSize |
Возвращает размер в битах вычисляемого хэш-кода. |
| InputBlockSize |
При переопределении в производном классе получает размер входного блока. |
| OutputBlockSize |
При переопределении в производном классе получает размер выходного блока. |
Методы
| Имя | Описание |
|---|---|
| Clear() |
Освобождает все ресурсы, используемые классом HashAlgorithm . |
| ComputeHash(Byte[], Int32, Int32) |
Вычисляет хэш-значение для указанного региона указанного массива байтов. |
| ComputeHash(Byte[]) |
Вычисляет хэш-значение для указанного массива байтов. |
| ComputeHash(Stream) |
Вычисляет хэш-значение для указанного 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 и при необходимости освобождает управляемые ресурсы. |