Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
защита данных / Криптография в MS Visual Studio.doc
Скачиваний:
56
Добавлен:
31.03.2015
Размер:
743.42 Кб
Скачать

Глава 3 Средства хеширования и обеспечения целостности данных

3.1. Классы алгоритмов хеширования

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

  • MD5 (абстрактный базовый класс MD5 и его наследники MD5Cng и MD5CryptoServiceProvider);

  • RIPEMD (абстрактный базовый класс RIPEMD160 и его наследник RIPEMD160Managed);

  • SHA1 (абстрактный базовый класс SHA1 и его наследники SHA1Cng, SHA1Managed и SHA1CryptoServiceProvider);

  • SHA256 (классы SHA256, SHA256Cng, SHA256Managed и SHA256CryptoServiceProvider);

  • SHA384 (классы SHA384, SHA384Cng, SHA384Managed и SHA384CryptoServiceProvider);

  • SHA512 (классы SHA512, SHA512Cng, SHA512Managed и SHA512CryptoServiceProvider).

Абстрактный класс HashAlgorithm имеет следующие свойства:

  • bool CanReuseTransform – признак возможности повторного использования объекта хеширования;

  • bool CanTransformMultipleBlocks – признак возможности хеширования нескольких блоков данных;

  • byte[] Hash – вычисленное хеш-значение;

  • int HashSize – длина хеш-значения в битах;

  • int InputBlockSize – длина блока входных данных;

  • int OutputBlockSize – длина блока выходных данных.

В классе HashAlgorithm также определены следующие методы, частично переопределяемые в классах-наследниках:

  • void Clear() – освобождение всех ресурсов, используемых объектом хеширования;

  • byte[] ComputeHash(byte[] buffer) – вычисление хеш-значения для указанных данных;

  • byte[] ComputeHash(Stream inputStream) – вычисление хеш-значения для данных из указанного потока;

  • byte[] ComputeHash(byte[] buffer, int offset, int count) – вычисление хеш-значения для данных длиной count байт из буфера buffer со смещением offset;

  • static HashAlgorithm Create() – создание объекта хеширования для алгоритма по умолчанию SHA1;

  • static HashAlgorithm Create(string hashName) – создание объекта хеширования для указанного алгоритма (допустимы значения SHA, SHA1, System.Security.Cryptography.SHA1, System.Security. Cryptography.HashAlgorithm, MD5, System.Security.Cryptography. MD5, SHA256, SHA-256, System.Security.Cryptography.SHA256, SHA384, SHA-384, System.Security.Cryptography.SHA384, SHA512, SHA-512, System.Security.Cryptography.SHA512);

  • byte[] HashFinal() – завершение хеширования после обработки последних данных и возвращение результирующего хеш-значения;

  • void Initialize() – инициализация объекта хеширования;

  • int TransformBlock(byte[] inputBuffer, int inputOffset, int inputCount, byte[] outputBuffer, int outputOffset) – хеширование данных длиной inputCount байт из буфера inputBuffer со смещением inputOffset с копированием входных данных в буфер outputBuffer со смещением outputOffset; возвращение количества записанных в выходной буфер байт данных;

  • byte[] TransformFinalBlock(byte[] inputBuffer, int inputOffset, int inputCount) – хеширование данных длиной inputCount байт из буфера inputBuffer со смещением inputOffset и возвращение копии хешированных данных.

Классы MD5Cng, MD5CryptoServiceProvider, RIPEMD160Managed, SHA1Cng, SHA1Managed, SHA1CryptoServiceProvider, SHA256Cng, SHA256Managed, SHA256CryptoServiceProvider, SHA384, SHA384Cng, SHA384Managed, SHA384CryptoServiceProvider, SHA512Cng, SHA512Managed и SHA512CryptoServiceProvider имеют конструкторы без параметров.

Соседние файлы в папке защита данных