Средство аутентификации на основе ГОСТ Р 34.11-2012
Заказать уникальную курсовую работу- 40 40 страниц
- 0 + 0 источников
- Добавлена 11.07.2018
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Постановка задачи 4
Теоретическое описание метода решения задачи 5
Понятие хеширования 5
Обозначения алгоритма 6
Общие положения 7
Константы 7
Преобразования 7
Функция сжатия 8
Процедура вычисления хэш-функции 8
Программная реализация алгоритма 10
Константы 10
Операции 12
Метод Hash 15
Публичные методы 18
Результаты работы приложения 20
Блок схема реализованного алгоритма 25
Заключение 28
Список используемых источников 29
Приложение 30
Класс GOST_3411_12: 30
Главная форма и тестирование: 38
A[j]; }byte[] ResPart = BitConverter.GetBytes(t).Reverse().ToArray();Array.Copy(ResPart, 0, res, i * 8, 8); }return res; }private byte[] Kk(byte[] K, inti) { K = AddXor(K, Const.C[i]); K = S(K); K = P(K); K = L(K);return K; }private byte[] E(byte[] K, byte[] m) {byte[] step = AddXor(K, m);for (inti = 0; i < 12; i++) {step = S(step);step = P(step);step = L(step); K = Kk(K, i);step = AddXor(step, K); }return step; }private byte[] Gn(byte[] N, byte[] h, byte[] m) {byte[] K = AddXor(h, N); K = S(K); K = P(K); K = L(K);byte[] t = E(K, m); t = AddXor(t, h);byte[] G = AddXor(t, m);return G; }private byte[] Hash(byte[] message) {byte[] paddedMes = new byte[64];intlen = message.Length * 8;byte[] h = new byte[64]; //1.1 h: = IVArray.Copy(IV, h, 64); //1.2 N: = 0^512 (4x16)byte[] N0 ={ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 };byte[] N_512 = BitConverter.GetBytes(512);intinc = 0;//1.3 SigmaE: = 0^512 //1.4 Перейти к этапу 2 //2.1 Проверить условие |М| < 512 /*Пока длина больше либо равна 512 бит*/while (len >= 512) {inc++; //2.2. Вычислить подвекторmbyte[] tmpMes = new byte[64];Array.Copy(message, message.Length - inc * 64, tmpMes, 0, 64); //2.3. h: = Gn(h, m) h = Gn(this.N, h, tmpMes); /*2.4. N: = AddModul(N512)*/ N = AddModul(N, N_512.Reverse().ToArray()); /*2.5. SigmaE: = AddModul(SigmaE, m)*/SigmaE = AddModul(SigmaE, tmpMes);/*2.6. M:=M'*/len -= 512; /*2.7. Перейти к шагу 2.1*/} /*3.1 m: = 0^511-|M|*/byte[] mes1 = new byte[message.Length - inc * 64];Array.Copy(message, 0, mes1, 0, message.Length - inc * 64);/*Если длина сообщения меньше 64 байт то заполняем*/if (mes1.Length < 64) {for (inti = 0; i < (64 - mes1.Length - 1); i++) {paddedMes[i] = 0; }paddedMes[64 - mes1.Length - 1] = 0x01;Array.Copy(mes1, 0, paddedMes, 64 - mes1.Length, mes1.Length); } //3.2. h:= Gn(h, m); h = Gn(N, h, paddedMes);byte[] MesLen = BitConverter.GetBytes(mes1.Length * 8); //3.3. N:=Vec512(Int51(N)+|M|) N = AddModul(N, MesLen.Reverse().ToArray()); //3.4. SigmaE:= Vec512(SigmaE, M)SigmaE = AddModul(SigmaE, paddedMes); //3.5. h: = G0(h, N) h = Gn(N0, h, N); //3.6. G0(h, SigmaE) h = Gn(N0, h, SigmaE);/*Если выходная длина была 512 бит то просто возращаем*/if (_outLen == 512)returnh; /*Иначе копируем только первые 32 байта = 256 бит*/else {byte[] h256 = new byte[32];Array.Copy(h, 0, h256, 0, 32);returnh256;} //3.7. Конец работы алгоритма } /*Результат хэша в виде строки*/public string Hash_string(string Message) {byte[] mes = Encoding.Default.GetBytes(Message);byte[] res = this.Hash(mes);string result = "";foreach (var b in res) {result += b.ToString("x2"); }return result;}/*Результат хэша в виде шестнадцатеричного числа*/public string Hash_To_Hex(string Message) {byte[] mes = Encoding.Default.GetBytes(Message);byte[] res = this.Hash(mes);returnBitConverter.ToString(res); } /*Хэшфункцияот файла*/public string Hash_File(string path, int type=0) {byte[] res;using (FileStream fs = System.IO.File.OpenRead(path)) {byte[] fileData = new byte[fs.Length];fs.Read(fileData, 0, (int)fs.Length);res = this.Hash(fileData);if(type==0) {string result = "";foreach (var b in res) {result += b.ToString("x2"); }return result; }else {returnBitConverter.ToString(res); } } } }Главнаяформаитестирование:private List
Вопрос-ответ:
Зачем нужно средство аутентификации на основе ГОСТ Р 34 11 2012?
Средство аутентификации на основе ГОСТ Р 34 11 2012 используется для проверки целостности и подлинности данных, которые передаются или хранятся. Это позволяет обеспечить безопасность при обмене информацией и защитить ее от несанкционированного доступа или изменений.
Что такое хеширование?
Хеширование - это процесс преобразования данных произвольной длины в фиксированную строку фиксированной длины, называемую хэш-значением. Хеш-значение представляет собой уникальную "сокращенную" версию исходных данных и служит для проверки целостности и подлинности этих данных.
Как работает алгоритм на основе ГОСТ Р 34 11 2012?
Алгоритм на основе ГОСТ Р 34 11 2012 использует комбинацию преобразований данных и функции сжатия для вычисления хэш-значения. Он обрабатывает данные блоками фиксированного размера и применяет несколько циклов преобразований для каждого блока. В результате получается уникальное хэш-значение, которое может быть использовано для проверки целостности данных.
Какие результаты можно получить при использовании средства аутентификации на основе ГОСТ Р 34 11 2012?
При использовании средства аутентификации на основе ГОСТ Р 34 11 2012 можно получить хэш-значение, которое можно использовать для проверки целостности и подлинности данных. Это позволяет обеспечить безопасность при обмене информацией и защитить ее от несанкционированного доступа или изменений.
Какие основные положения алгоритма на основе ГОСТ Р 34 11 2012?
Основные положения алгоритма на основе ГОСТ Р 34 11 2012 включают в себя преобразования данных, функцию сжатия, процедуру вычисления хэш-функции и программную реализацию алгоритма. Эти положения определяют способ обработки данных и получения хэш-значения.
Какое средство аутентификации основано на ГОСТ Р 34.11-2012?
Средство аутентификации, основанное на ГОСТ Р 34.11-2012, это хэш-функция.
Какая задача стоит перед ГОСТ Р 34.11-2012?
Задача ГОСТ Р 34.11-2012 заключается в предоставлении метода вычисления хэш-значений для различных данных.
Что такое хеширование?
Хеширование - это процесс преобразования входного сообщения произвольной длины в фиксированную строку фиксированной длины, называемую хэш-значением.
Какие общие положения существуют для ГОСТ Р 34.11-2012?
Общие положения ГОСТ Р 34.11-2012 определяют основные принципы хэширования, включая используемые константы и преобразования.
Как вычисляется хеш-функция в алгоритме ГОСТ Р 34.11-2012?
Хеш-функция в алгоритме ГОСТ Р 34.11-2012 вычисляется путем применения определенной последовательности операций к входным данным.
Каким образом работает средство аутентификации на основе ГОСТ Р 34 11 2012?
Средство аутентификации на основе ГОСТ Р 34 11 2012 использует алгоритм хэширования, который позволяет преобразовывать произвольный входной текст в фиксированный хэш-код. Этот хэш-код затем может использоваться для проверки целостности данных и аутентификации отправителя.
Какой постановкой задачи руководствовалось при разработке алгоритма ГОСТ Р 34 11 2012?
При разработке алгоритма ГОСТ Р 34 11 2012 была поставлена задача создания криптографического алгоритма, обеспечивающего высокую стойкость к различным атакам и надежность в использовании. Алгоритм должен был быть эффективным по скорости работы и иметь возможность применения в различных областях информационной безопасности.