Статус: Новичок
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2019(UTC) Сообщений: 9
|
Другими словами, я получил хэш подписи, как мне его сохранить в файл чтобы он читался?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Вы пробовали просто хеш в файл записывать а потом сравнивать его со значением , полученным из утилиты cryptcp , допустим ? С этим у меня возникла проблема (я, правда, на powershell-e делал) Решение тутЕсли все таки захотите проверить, правильно ли у вас просто хеш считается и в файл записывается, можете с результатом работы моего скрипта сравнить |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2019(UTC) Сообщений: 9
|
Автор: Анатолий Колкочев Вы пробовали просто хеш в файл записывать а потом сравнивать его со значением , полученным из утилиты cryptcp , допустим ? С этим у меня возникла проблема (я, правда, на powershell-e делал) Решение тутЕсли все таки захотите проверить, правильно ли у вас просто хеш считается и в файл записывается, можете с результатом работы моего скрипта сравнить Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее: Код:?>~-/??n3?
Rf??f??j?<???s???j
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам Автор: hasio Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее: Код:?>~-/??n3?
Rf??f??j?<???s???j
Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится Отредактировано пользователем 21 ноября 2019 г. 10:37:07(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2019(UTC) Сообщений: 9
|
Автор: Анатолий Колкочев Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам Автор: hasio Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее: Код:?>~-/??n3?
Rf??f??j?<???s???j
Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится У меня другой вопрос, как полученный хэш подписи перевести в файл .sig Хэш файла и хэш подписи совпадают. Это я уже выяснил.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.07.2018(UTC) Сообщений: 467
Сказал(а) «Спасибо»: 43 раз Поблагодарили: 69 раз в 61 постах
|
Автор: hasio Автор: Анатолий Колкочев Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам Автор: hasio Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее: Код:?>~-/??n3?
Rf??f??j?<???s???j
Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится У меня другой вопрос, как полученный хэш подписи перевести в файл .sig Хэш файла и хэш подписи совпадают. Это я уже выяснил. Т.е. извлечь message digest из подписи? |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2019(UTC) Сообщений: 9
|
Автор: Анатолий Колкочев Автор: hasio Автор: Анатолий Колкочев Мой скрипт вернул не подпись, а правильно записанный хеш, который, при необходимости, можно дальше передавать на вход другим скриптам Автор: hasio Как я понял файл подписи сгенерирован мною считался неверно. Ваша функция вернула следующее: Код:?>~-/??n3?
Rf??f??j?<???s???j
Попробуйте записать просто хеш в файл с помощью вашего кода и проверить, правильно ли выводится У меня другой вопрос, как полученный хэш подписи перевести в файл .sig Хэш файла и хэш подписи совпадают. Это я уже выяснил. Т.е. извлечь message digest из подписи? Не понимаю о чем вы. У меня есть буффер файла, есть хэш этого файла, есть закодированный хэш подписи. Как мне получить файл .sig?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,322 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
Здравствуйте.
Опишите задачу. В коде Вы получаете само значение подписи, записывайте его в файл. Всё.
Или Вы под "получить .sig файл" - подразумеваете стандарт CMS (вместе с сертификатом и т.п.)? Тогда необходимо использовать другие функции.
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 20.11.2019(UTC) Сообщений: 9
|
Автор: Андрей Писарев Здравствуйте.
Опишите задачу. В коде Вы получаете само значение подписи, записывайте его в файл. Всё.
Или Вы под "получить .sig файл" - подразумеваете стандарт CMS (вместе с сертификатом и т.п.)? Тогда необходимо использовать другие функции.
Да верно, стандарт CMS, я разобрался, теперь вопрос другой, как объединить два стандарта cms в один файл? Просто объединив массивы которые были получены методом Encode()? Или же просто в качестве исходных данных в класс ContentInfo подавать уже созданный ранее CMS файл? И как мне отличить алгоритмы подписывания? Например ГОСТ от RSA? Отредактировано пользователем 22 ноября 2019 г. 4:14:08(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close