- •Для студентов, обучающихся по направлению
- •Введение
- •Глава 1 Средства обеспечения конфиденциальности данных
- •1.1. Классы, реализующие алгоритмы симметричного шифрования
- •1.2. Использование классов библиотеки fcl для шифрования данных
- •Имена объектов программы для элементов управления
- •Имена объектов программ для элементов управления
- •1.3. Непосредственное обращение к криптопровайдерам в приложениях для Microsoft .Net
- •Глава 2 Средства обмена секретными ключами и обеспечения аутентичности и целостности данных
- •2.1. Классы, реализующие алгоритмы асимметричного шифрования
- •2.2. Классы для вычисления и проверки эцп
- •2.3. Использование классов асимметричной криптографии
- •Имена объектов программ для элементов управления
- •Имена объектов программ для элементов управления
- •Глава 3 Средства хеширования и обеспечения целостности данных
- •3.1. Классы алгоритмов хеширования
- •3.2. Классы для вычисления и проверки кодов аутентификации сообщений
- •3.3. Использование средств хеширования и контроля целостности
- •Имена объектов программ для элементов управления
- •Контрольные вопросы
- •Библиографический список
- •Оглавление
- •Глава 1 7
- •Глава 2 40
- •Глава 3 70
Глава 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 имеют конструкторы без параметров.