КриптоПро как подписать файл, если токен на флешке
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 07.07.24 13:37
Оценка:
Скажите пожалуйста нужно ли файл сертификата грузить в базу или он будет на флешке?
GPT такое выдал
using System;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;

class Program
{
    static void Main()
    {
        // Получаем доступ к сертификату с флешки CryptoPro
        X509Store store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
        store.Open(OpenFlags.ReadOnly);
        
        X509Certificate2Collection certificates = store.Certificates.Find(X509FindType.FindBySubjectName, "Ваше имя сертификата", false);

        if (certificates.Count > 0)
        {
            X509Certificate2 certificate = certificates[0];

            // Создаем объект для работы с ЭЦП
            RSACryptoServiceProvider csp = (RSACryptoServiceProvider)certificate.PrivateKey;

            // Подписываем данные
            byte[] dataToSign = System.Text.Encoding.UTF8.GetBytes("Данные для подписи");
            byte[] signature = csp.SignData(dataToSign, CryptoConfig.MapNameToOID("SHA256"));

            // Проверяем подпись
            bool verified = csp.VerifyData(dataToSign, CryptoConfig.MapNameToOID("SHA256"), signature);

            if (verified)
            {
                Console.WriteLine("Подпись верна!");
            }
            else
            {
                Console.WriteLine("Подпись недействительна.");
            }
        }
        else
        {
            Console.WriteLine("Сертификат не найден.");
        }

        store.Close();
    }
}


Store я думал это реестр, но похоже может быть и файл, если правильно понял код
Re: КриптоПро как подписать файл, если токен на флешке
От: Qulac Россия  
Дата: 07.07.24 13:47
Оценка:
Здравствуйте, dsalodki, Вы писали:

D>Скажите пожалуйста нужно ли файл сертификата грузить в базу или он будет на флешке?

D>GPT такое выдал
D>[cs]
D>using System;
D>using System.Security.Cryptography;
D>using System.Security.Cryptography.X509Certificates;

Код вроде рабочий, в общем так если я не забыл: если криптопро не найдет сертификат в локальном хранилище, то покажет диалог выбора ключа. В общем если есть ключ, то это легко на практике проверить.
Программа – это мысли спрессованные в код
Re[2]: КриптоПро как подписать файл, если токен на флешке
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 07.07.24 14:08
Оценка:
А файл на флешке с расширением key
есть? Его просто File.ReadAllBytes можно прочитать?
using System;
using System.Security.Cryptography.X509Certificates;

class Program
{
    static void Main()
    {
        byte[] certBytes = System.IO.File.ReadAllBytes("путь_к_вашему_файлу.cer");
        byte[] privateKeyBytes = System.IO.File.ReadAllBytes("путь_к_вашему_файлу.key");

        X509Certificate2 certificate = new X509Certificate2(certBytes, privateKeyBytes, "пароль_если_есть");

        // Теперь у вас есть объект X509Certificate2, и вы можете использовать его для подписи и других операций.

        // Пример: выводим информацию о сертификате
        Console.WriteLine("Субъект: " + certificate.Subject);
        Console.WriteLine("Издатель: " + certificate.Issuer);
    }
}


Вот так гпт советует, но не могу проверить, пока нет флешки
Re[3]: КриптоПро как подписать файл, если токен на флешке
От: Qulac Россия  
Дата: 07.07.24 14:29
Оценка:
Здравствуйте, dsalodki, Вы писали:

D>А файл на флешке с расширением key

D>есть? Его просто File.ReadAllBytes можно прочитать?
D>
D>using System;
D>using System.Security.Cryptography.X509Certificates;

D>class Program
D>{
D>    static void Main()
D>    {
D>        byte[] certBytes = System.IO.File.ReadAllBytes("путь_к_вашему_файлу.cer");
D>        byte[] privateKeyBytes = System.IO.File.ReadAllBytes("путь_к_вашему_файлу.key");

D>        X509Certificate2 certificate = new X509Certificate2(certBytes, privateKeyBytes, "пароль_если_есть");

D>        // Теперь у вас есть объект X509Certificate2, и вы можете использовать его для подписи и других операций.

D>        // Пример: выводим информацию о сертификате
D>        Console.WriteLine("Субъект: " + certificate.Subject);
D>        Console.WriteLine("Издатель: " + certificate.Issuer);
D>    }
D>}
D>


D>Вот так гпт советует, но не могу проверить, пока нет флешки



Можно тестовый сертификат получить: и на нем проверить.
Программа – это мысли спрессованные в код
Отредактировано 07.07.2024 14:31 Qulac . Предыдущая версия .
Re[4]: КриптоПро как подписать файл, если токен на флешке
От: dsalodki Беларусь http://dsalodki.wix.com/resume
Дата: 07.07.24 15:13
Оценка:
Можешь дать ссылку на ихнем сайте, где подписывают через c#. Не на форуме, а именно на сайте. Помню видел, но такой ебанутый сайт что хрен найдёшь.
Re[5]: КриптоПро как подписать файл, если токен на флешке
От: Qulac Россия  
Дата: 07.07.24 15:19
Оценка:
Здравствуйте, dsalodki, Вы писали:

D>Можешь дать ссылку на ихнем сайте, где подписывают через c#. Не на форуме, а именно на сайте. Помню видел, но такой ебанутый сайт что хрен найдёшь.


Не знаю, вроде нормальные примеры на форуме. Можно еще их документация к библиотеке КриптоПро .NET посмотреть: https://cpdn.cryptopro.ru/default.asp?url=content/cpnet/html/08bcd27a-1f1c-4494-a996-37d88776309e.htm там есть примеры использования. К стати эту либу нужно тоже ставить.
Программа – это мысли спрессованные в код
Отредактировано 07.07.2024 15:23 Qulac . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.