Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

·  0x8002 (CALG_MD4, код алгоритма хеширования MD4).

Первые две константы используются при вызове функции CryptGetHashParam, а третья – CryptCreateHash.

Рис. 7. Главное окно программы хеширования

Ниже приведен текст измененной программы из предыдущего примера:

using System;

using System. Collections. Generic;

using ponentModel;

using System. Data;

using System. Drawing;

using System. Linq;

using System. Text;

using System. Windows. Forms;

// подключение пространства имен классов криптографии

using System. Security. Cryptography;

// подключение классов для работы с внешними библиотеками

using System. Runtime. InteropServices;

namespace WindowsFormsApplication6

{

// класс главного окна

public partial class Form1 : Form

{

// дескриптор криптопровайдера

IntPtr hProv;

// дескриптор объекта хеширования

IntPtr hHash;

// данные из первого сообщения

byte[] bytes1;

// данные из второго сообщения

byte[] bytes2;

// хеш-значение

byte[] hash;

/* определение функций, импортируемых из внешней библиотеки с реализацией криптопровайдера */

// инициализация криптопровайдера

[DllImport("advapi32.dll", CharSet = CharSet. Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType. Bool)]

public static extern bool CryptAcquireContext(ref IntPtr hProv,

string pszContainer, string pszProvaider,

uint dwProvType, uint dwFlags);

// инициализация объекта хеширования

[DllImport("advapi32.dll", CharSet = CharSet. Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType. Bool)]

НЕ нашли? Не то? Что вы ищете?

public static extern bool CryptCreateHash(IntPtr hProv, uint Algid,

IntPtr hKey, uint dwFlags, ref IntPtr hHash);

// хеширование данных

[DllImport("advapi32.dll", CharSet = CharSet. Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType. Bool)]

public static extern bool CryptHashData(IntPtr hHash, byte[] pbData,

uint dwDataLen, uint dwFlags);

// получение хеш-значения

[DllImport("advapi32.dll", CharSet = CharSet. Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType. Bool)]

public static extern bool CryptGetHashParam(IntPtr hHash, uint dwParam,

byte[] pbData, ref uint pdwDataLen, uint dwFlags);

// разрушение объекта хеширования

[DllImport("advapi32.dll", CharSet = CharSet. Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType. Bool)]

public static extern bool CryptDestroyHash(IntPtr hHash);

// освобождение криптопровайдера

[DllImport("advapi32.dll", CharSet = CharSet. Auto, SetLastError = true)]

[return: MarshalAs(UnmanagedType. Bool)]

public static extern bool CryptReleaseContext(IntPtr hProv, uint dwFlags);

// конструктор класса главного окна

public Form1()

{

InitializeComponent();

// инициализация криптопровайдера

if (!CryptAcquireContext(ref hProv, null, null, 1, 0))

/* если первая попытка неудачна, инициализируем криптопровайдер с созданием контейнера ключей */

if (!CryptAcquireContext(ref hProv, null, null, 1, 8))

throw new CryptographicException

("Ошибка при инициализации криптопровайдера.");

}

// обработка нажатия кнопки "Выход"

private void Exit_Click(object sender, EventArgs e)

{

// освобождение криптопровайдера

CryptReleaseContext(hProv, 0);

// закрытие окна программы

Close();

}

/* обработка изменения текста в любом их двух редакторов для ввода сообщений */

private void Message1_TextChanged(object sender, EventArgs e)

{

// длина параметра объекта хеширования

uint hashlen;

// очистка поля для отображения хеш-значения

HashValue. Text="";

// данные для хеширования

byte[] data;

// получение данных первого сообщения

bytes1=Encoding. ASCII. GetBytes(Message1.Text);

// получение данных второго сообщения

bytes2 = Encoding. ASCII. GetBytes(Message2.Text);

// выделение памяти для хешируемых данных

data=new byte[bytes1.Length+bytes2.Length];

// объединение данных двух сообщений

bytes1.CopyTo(data, 0);

bytes2.CopyTo(data, bytes1.Length);

// инициализация объекта хеширования

if(!CryptCreateHash(hProv, 0x8002, (IntPtr)null, 0, ref hHash))

throw new CryptographicException

("Ошибка при инициализации объекта хеширования.");

// хеширование данных

if(!CryptHashData(hHash, data, (uint)data. Length, 0))

throw new CryptographicException

("Ошибка при хешировании данных.");

/* задание длины параметра, получаемого функцией CryptGetHashParam */

hashlen = 4;

// выделение памяти для буфера с получаемой длиной хеш-значения

hash = new byte[hashlen];

// получение длины хеш-значения

if (!CryptGetHashParam(hHash, 4, hash, ref hashlen, 0))

throw new CryptographicException

("Ошибка при получении длины хеш-значения.");

// сохранение полученной длины хеш-значения

uint hashsize = (uint)hash[0];

// выделение памяти для хеш-значения

hash = new byte[hashsize];

// получение вычисленного хеш-значения

if(!CryptGetHashParam(hHash, 2, hash, ref hashsize, 0))

throw new CryptographicException

("Ошибка при получении хеш-значения.");

// отображение хеш-значения в шестнадцатеричном формате

for(int i=0; i<hashsize; i++)

HashValue. Text+=string. Format("{0,2:X2}", hash[i]);

// разрушение объекта хеширования

CryptDestroyHash(hHash);

}

}

}

Контрольные вопросы

1.  Какова структура криптографических классов библиотеки Framework Class Library (FCL)?

2.  На каком уровне иерархии находятся классы, содержащие реализации криптографических алгоритмов?

3.  Какие алгоритмы симметричного шифрования реализованы в классах библиотеки FCL?

4.  Какие способы генерации, сохранения и восстановления секретных ключей симметричного шифрования возможны при использовании классов библиотеки FCL?

5.  В чем преимущества каждого из способов генерации секретных ключей симметричного шифрования?

6.  Какие два типа реализаций криптографических алгоритмов имеются в библиотеке FCL?

7.  Как установить длину криптографического ключа, используемого объектами криптографических классов библиотеки FCL?

8.  Как использовать в приложениях для Microsoft. Net криптоалгоритмы, реализации которых отсутствуют в библиотеке FCL?

9.  Можно ли использовать в приложениях для реализации криптоалгоритмов, созданные поставщиками, отличными от Microsoft?

10.  Какие асимметричные криптосистемы реализованы классами библиотеки FCL?

11.  Чем отличаются криптографические классы библиотеки FCL, относящиеся к криптографии нового поколения (cryptography new generation, CNG)?

12.  Какие классы с реализацией асимметричных криптоалгоритмов могут использоваться для обмена секретными ключами симметричного шифрования?

13.  Какие классы с реализацией асимметричных криптоалгоритмов могут использоваться для вычисления и проверки электронной цифровой подписи?

14.  Какие алгоритмы хеширования реализованы в классах библиотеки FCL?

15.  Какие классы для вычисления кодов аутентификации сообщений существуют в библиотеке FCL?

16.  В чем разница между различными классами для вычисления кодов аутентификации сообщений?

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

1.  , , Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. − М.: КомКнига, 2006. − 328 с.

2.  ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования.

3.  ГОСТ Р 34.10-2001 Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи.

4.  ГОСТ Р 34.11-94 Информационная технология. Криптографическая защита информации. Функция хеширования.

5.  КриптоПро CSP. http://www. cryptopro. ru/ products/csp/overview.

6.  Аутентификация: от паролей до открытых ключей. − М.: Издательский дом «Вильямс», 2002. – 432 с.

7.  Криптография и безопасность в технологии. NET. – М.:БИНОМ. Лаборатория знаний, 2007. – 479 с.

8.  Защита информационных систем. – М.: Издательский дом МЭИ, 2010. – 88 с.

9.  Б. Использование криптографических интерфейсов. М.: Издательский дом МЭИ, 2007. – 112 с.

10.  Криптографические интерфейсы и их использование. − М.: Горячая линия-Телеком, 2007. – 278 с.

11.  Методы и средства защиты информации в компьютерных системах. 4-е изд. ─ М.: Издательский центр «Академия», 2008. – 256 с.

12.  Microsoft Corporation. MSDN Library, 1987-2012.

13.  System. Security. Cryptography – пространство имен. http://msdn. /ru-ru/library/system. security. cryptography. aspx.

ОГЛАВЛЕНИЕ

Введение. 3

Глава 1. Средства обеспечения конфиденциальности данных. 6

1.1. Классы, реализующие алгоритмы симметричного шифрования. 6

1.2. Использование классов библиотеки FCL для шифрования данных. 16

1.3. Непосредственное обращениек к криптопровайдерам в приложениях для 30

Глава 2. Средства обмена секретными ключами и обеспечения аутентичности и целостности данных. 39

2.1. Классы, реализующие алгоритмы асимметричного шифрования. 39

2.2. Классы для вычисления и проверки ЭЦП.. 54

2.3. Использование классов асимметричной криптографии. 56

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

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

3.2. Классы для вычисления и проверки кодов аутентификации сообщений 71

3.3. Использование средств хеширования и контроля целостности. 72

Контрольные вопросы.. 78

Библиографический список. 79

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15