Статус: Новичок
Группы: Участники
Зарегистрирован: 28.10.2021(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
для формирования client_secret в ЕСИА по ГОСТ Р 34.10-2012 использую вот такую функцию Код:static void sign_exampe(string message)
{
ASCIIEncoding ByteConverter = new ASCIIEncoding();
byte[] data = ByteConverter.GetBytes(message);
var gost = new Gost3410_2012_256CryptoServiceProvider();
Gost3411_2012_256CryptoServiceProvider alg = new Gost3411_2012_256CryptoServiceProvider();
alg.ComputeHash(data);
alg.Clear();
gost.SignData(data, alg);
}
получаю Недопустимое значение на gost.SignData(data, alg); в чем может быть дело?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,193 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 274 раз в 254 постах
|
Добрый день! для получения сырой (raw) подписи см пример тут |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.10.2021(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
Автор: Санчир Момолдаев Добрый день! для получения сырой (raw) подписи см пример тут спасибо за ответ, но мне нужно не подписать, а зашифровать строку текста и валиться на сроке gost.SignData(data, alg); что в чем недопустимо?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,322 Сказал «Спасибо»: 549 раз Поблагодарили: 2208 раз в 1723 постах
|
Автор: Чапаев Автор: Санчир Момолдаев Добрый день! для получения сырой (raw) подписи см пример тут спасибо за ответ, но мне нужно не подписать, а зашифровать строку текста и валиться на сроке gost. SignData(data, alg); что в чем недопустимо? Тогда используйте шифрование, а не подписание. p.s. в ЕСИА требуется подписать, а не зашифровать. |
|
1 пользователь поблагодарил Андрей * за этот пост.
|
Чапаев оставлено 01.11.2021(UTC)
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 28.10.2021(UTC) Сообщений: 8
Сказал(а) «Спасибо»: 1 раз
|
спасибо за исправление моей ошибки - надо действительно подписывать. но вот такой вопрос по поводу вашего пример поставил корневой сертификат из вашего тестового УЦ "Тестовый УЦ ООО "КРИПТО-ПРО" алгоритм подписи GOST R 34.11-2012/34.10-2012 256 bit сгенерировал себе сертификат алгоритм подписи GOST R 34.11-2012/34.10-2012 256 bit тот же и на втором способе у вас на строку Код:var cert_key = signerCert.PrivateKey as Gost3410_2012_256CryptoServiceProvider;
получаю ошибку "Алгоритм ключа сертификата не поддерживается." кажется ведь все совпадает? опять что то не учел ? и вопрос про ваш пример - в первом способе подпись вы переворачиваете Код: File.WriteAllBytes(sigFileName1,sign.Reverse().ToArray());
а во втором нет Код: File.WriteAllBytes(sigFileName2, sign);
это не заметили ошибку или так надо?
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,193 Сказал(а) «Спасибо»: 100 раз Поблагодарили: 274 раз в 254 постах
|
надо смотреть не алгоритм подписи (алгоритм УЦ) а алгоритм открытого ключа (алгоритм вашего ключа) там по ссылке есть: Цитата:пойбайтово надо переворачивать (.Reverse().ToArray()) для совместимости с CSP. в CSP (С) один порядок байт, в C# и Java другой. читайте про Big-Endian и Little-Endian Отредактировано пользователем 1 ноября 2021 г. 19:01:56(UTC)
| Причина: Не указана |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close