Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline hasio  
#1 Оставлено : 20 ноября 2019 г. 12:06:50(UTC)
hasio

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.11.2019(UTC)
Сообщений: 9

Есть код который делает подпись .sig для файла.
Метод VerifyHash возвращает true, хотя если я проверю документ и подпись на других ресурсах, то мне пишет ошибку проверку подписи:
  • Возможные причины неверной подписи:

    Файл был модифицирован;
    Подпись не соответствует файлу.


Подскажите что не так.

Код:
            byte[] content;
            using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
            {
                byte[] bytes = File.ReadAllBytes(filePath);
                fs.Read(bytes, 0, Convert.ToInt32(fs.Length));
                content = bytes;
                fs.Close();
            }
            Gost3411_2012_256CryptoServiceProvider gostHash = new Gost3411_2012_256CryptoServiceProvider();
            //32-х битное значение хэш для подписи.
            byte[] hashValue = gostHash.ComputeHash(content);
            X509Certificate2 certificate = certListBox.SelectedItem as X509Certificate2;
            Gost3410_2012_256CryptoServiceProvider gost = null;
            if (certificate.PrivateKey != null)//Создаем ключ эцп
            {
                gost = certificate.PrivateKey as Gost3410_2012_256CryptoServiceProvider;
            }
            if (gost == null)
                MessageBox.Show("Данный ключ не поддерживает алгоритм ГОСТ 34-10");
            else
            {
                try
                {
                    //Подписываем значение хэш.
                    byte[] SignedHashValue = gost.SignHash(hashValue);//GostSignHash(hashValue, gost, "Gost3411_2012_256");

                    //Проверяем правильность подписи и выводим результат.
                    bool b = gost.VerifyHash(hashValue, SignedHashValue);//GostVerifyHash(hashValue, SignedHashValue, gost, "Gost3411_2012_256");
                    if (b)
                    {
                        MessageBox.Show("Подпись вычислена верно.");
                        ByteArrayToFile("test.sig", SignedHashValue);
                    }
                    else
                    {
                        MessageBox.Show("Подпись вычислена неверно.");
                    }
                }
                catch (ArgumentNullException ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }


Метод ByteArrayToFile
Код:
public bool ByteArrayToFile(string fileName, byte[] byteArray)
        {
            try
            {
                using (var fs = new FileStream(fileName, FileMode.Create, FileAccess.Write))
                {
                    fs.Write(byteArray, 0, byteArray.Length);
                    return true;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Exception caught in process: {0}", ex);
                return false;
            }
        }

Отредактировано пользователем 20 ноября 2019 г. 12:10:01(UTC)  | Причина: Не указана

Offline hasio  
#2 Оставлено : 21 ноября 2019 г. 10:00:18(UTC)
hasio

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.11.2019(UTC)
Сообщений: 9

Другими словами, я получил хэш подписи, как мне его сохранить в файл чтобы он читался?
Offline Анатолий Колкочев  
#3 Оставлено : 21 ноября 2019 г. 10:27:26(UTC)
TolikTipaTut1

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.07.2018(UTC)
Сообщений: 467

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Вы пробовали просто хеш в файл записывать а потом сравнивать его со значением , полученным из утилиты cryptcp , допустим ?

С этим у меня возникла проблема (я, правда, на powershell-e делал)

Решение тут

Если все таки захотите проверить, правильно ли у вас просто хеш считается и в файл записывается, можете с результатом работы моего скрипта сравнить
Offline hasio  
#4 Оставлено : 21 ноября 2019 г. 10:33:16(UTC)
hasio

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.11.2019(UTC)
Сообщений: 9

Автор: Анатолий Колкочев Перейти к цитате
Вы пробовали просто хеш в файл записывать а потом сравнивать его со значением , полученным из утилиты cryptcp , допустим ?

С этим у меня возникла проблема (я, правда, на powershell-e делал)

Решение тут

Если все таки захотите проверить, правильно ли у вас просто хеш считается и в файл записывается, можете с результатом работы моего скрипта сравнить


Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее:
Код:
?>~-/??n3?
Rf??f??j?<???s???j
Offline Анатолий Колкочев  
#5 Оставлено : 21 ноября 2019 г. 10:35:12(UTC)
TolikTipaTut1

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.07.2018(UTC)
Сообщений: 467

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам

Автор: hasio Перейти к цитате


Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее:
Код:
?>~-/??n3?
Rf??f??j?<???s???j


Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится

Отредактировано пользователем 21 ноября 2019 г. 10:37:07(UTC)  | Причина: Не указана

Offline hasio  
#6 Оставлено : 21 ноября 2019 г. 10:51:22(UTC)
hasio

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.11.2019(UTC)
Сообщений: 9

Автор: Анатолий Колкочев Перейти к цитате
Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам

Автор: hasio Перейти к цитате


Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее:
Код:
?>~-/??n3?
Rf??f??j?<???s???j


Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится


У меня другой вопрос, как полученный хэш подписи перевести в файл .sig
Хэш файла и хэш подписи совпадают. Это я уже выяснил.
Offline Анатолий Колкочев  
#7 Оставлено : 21 ноября 2019 г. 11:01:50(UTC)
TolikTipaTut1

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.07.2018(UTC)
Сообщений: 467

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: hasio Перейти к цитате
Автор: Анатолий Колкочев Перейти к цитате
Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам

Автор: hasio Перейти к цитате


Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее:
Код:
?>~-/??n3?
Rf??f??j?<???s???j


Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится


У меня другой вопрос, как полученный хэш подписи перевести в файл .sig
Хэш файла и хэш подписи совпадают. Это я уже выяснил.


Т.е. извлечь message digest из подписи?
Offline hasio  
#8 Оставлено : 21 ноября 2019 г. 11:17:53(UTC)
hasio

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.11.2019(UTC)
Сообщений: 9

Автор: Анатолий Колкочев Перейти к цитате
Автор: hasio Перейти к цитате
Автор: Анатолий Колкочев Перейти к цитате
Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам

Автор: hasio Перейти к цитате


Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее:
Код:
?>~-/??n3?
Rf??f??j?<???s???j


Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится


У меня другой вопрос, как полученный хэш подписи перевести в файл .sig
Хэш файла и хэш подписи совпадают. Это я уже выяснил.


Т.е. извлечь message digest из подписи?


Не понимаю о чем вы. У меня есть буффер файла, есть хэш этого файла, есть закодированный хэш подписи.
Как мне получить файл .sig?
Offline Андрей Писарев  
#9 Оставлено : 21 ноября 2019 г. 12:25:37(UTC)
Андрей *

Статус: Сотрудник

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,718
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2053 раз в 1593 постах
Здравствуйте.

Опишите задачу.
В коде Вы получаете само значение подписи, записывайте его в файл.
Всё.



Или Вы под "получить .sig файл" - подразумеваете стандарт CMS (вместе с сертификатом и т.п.)?
Тогда необходимо использовать другие функции.
Техническую поддержку оказываем тут
Наша база знаний
Offline hasio  
#10 Оставлено : 22 ноября 2019 г. 3:55:17(UTC)
hasio

Статус: Новичок

Группы: Участники
Зарегистрирован: 20.11.2019(UTC)
Сообщений: 9

Автор: Андрей Писарев Перейти к цитате
Здравствуйте.

Опишите задачу.
В коде Вы получаете само значение подписи, записывайте его в файл.
Всё.



Или Вы под "получить .sig файл" - подразумеваете стандарт CMS (вместе с сертификатом и т.п.)?
Тогда необходимо использовать другие функции.


Да верно, стандарт CMS, я разобрался, теперь вопрос другой, как объединить два стандарта cms в один файл? Просто объединив массивы которые были получены методом Encode()? Или же просто в качестве исходных данных в класс ContentInfo подавать уже созданный ранее CMS файл? И как мне отличить алгоритмы подписывания? Например ГОСТ от RSA?

Отредактировано пользователем 22 ноября 2019 г. 4:14:08(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.