powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / КриптоПро: дешифрование
11 сообщений из 11, страница 1 из 1
КриптоПро: дешифрование
    #38347748
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Всем привет!

Прошу у знающих КриптоПро помощи с дешифрованием CMS-enveloped сообщения.
Для доступа к API КриптоПро использую DIGT-провайдер, для работы с CMS - BouncyCastle.
Тестовый код:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Security.addProvider(new DIGTProvider());
        Security.addProvider(new BouncyCastleProvider());
        try {
            KeyStore keyStore = KeyStore.getInstance("CRYPTOPROCSPKEYSTORE", "DIGT");
            keyStore.load(new ByteArrayInputStream("CurrentUser".getBytes("UTF-8")), null);
            PrivateKey key = (PrivateKey) keyStore.getKey(KEY_ALIAS, /*KEYPASSWD.toCharArray()*/null);
            X509Certificate cert = (X509Certificate) keyStore.getCertificate(KEY_ALIAS);


            byte[] sourceBytes = readQiwiFile();
            CMSEnvelopedData enveloped = new CMSEnvelopedData(sourceBytes);

            RecipientId recId = new JceKeyTransRecipientId(cert);
            RecipientInformationStore recipients = enveloped.getRecipientInfos();
            RecipientInformation recipientInformation = recipients.get(recId);

            byte[] decryptedData = recipientInformation.getContent(new JceKeyTransEnvelopedRecipient(key));

            response.setContentType("text/plain");
            response.setCharacterEncoding("UTF-8");
            try (PrintWriter out = response.getWriter()) {
                out.println("<html>\n" +
                        "<head>\n" +
                        "    <title>TestServlet</title>\n" +
                        "</head>\n" +
                        "<body>\n" +
                        new String(decryptedData) +
                        "</body>\n" +
                        "</html>");
            }

        } catch (Exception e) {
            throw new ServletException(e);
        }
    }


При попытке получить контент получаю исключение:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
java.security.NoSuchAlgorithmException: Cannot find any provider supporting 1.2.643.2.2.19
        at javax.crypto.Cipher.getInstance(Cipher.java:524)
        at org.bouncycastle.jcajce.DefaultJcaJceHelper.createCipher(Unknown Source)
        at org.bouncycastle.operator.jcajce.OperatorHelper.createAsymmetricWrapper(Unknown Source)
        at org.bouncycastle.operator.jcajce.JceAsymmetricKeyUnwrapper.generateUnwrappedKey(Unknown Source)
        at org.bouncycastle.cms.jcajce.JceKeyTransRecipient.extractSecretKey(Unknown Source)
        at org.bouncycastle.cms.jcajce.JceKeyTransEnvelopedRecipient.getRecipientOperator(Unknown Source)
        at org.bouncycastle.cms.KeyTransRecipientInformation.getRecipientOperator(Unknown Source)
        at org.bouncycastle.cms.RecipientInformation.getContentStream(Unknown Source)
        at org.bouncycastle.cms.RecipientInformation.getContent(Unknown Source)
        at test.TestServlet.doGet(TestServlet.java:49)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
        at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
        at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
        at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
        at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
        at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
        at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
        at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
        at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
        at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
        at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
        at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
        at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
        at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
        at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
        at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
        at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
        at java.lang.Thread.run(Thread.java:722)

Что-то никаких умных мыслей в голову не приходит. Как это вылечить?
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38347812
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Строка номер 49 у тебя которая?
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38347849
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спрашиваем у гугля про OID 1.2.643.2.2.19 и видим, что это ГОСТ R 34.10-2001.
Версия Bouncy Castle какая?
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38347851
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя можете не отвечать - у Крипто Про собственный формат ключевого контейнера и читать его может только Крипто Про JCP.
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38347887
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
maytonСтрока номер 49 у тебя которая?
Код: java
1.
byte[] decryptedData = recipientInformation.getContent(new JceKeyTransEnvelopedRecipient(key));

Basil A. SidorovСпрашиваем у гугля про OID 1.2.643.2.2.19 и видим, что это ГОСТ R 34.10-2001.
Версия Bouncy Castle какая?bcXXXX-jdk16-146
Basil A. SidorovХотя можете не отвечать - у Крипто Про собственный формат ключевого контейнера и читать его может только Крипто Про JCP.Не только. Еще через TrustedJava можно получить доступ к криптохранилищу. Я простенький тест набросал, в котором шифруются данные ГОСТвым методом, но там используется реализация из TrustedJava, а Баунси ее, похоже, не видит... ((

Василий, может у Вам пример завалялся для КриптоПро JCP? Я их ознакомительную верисю скачал, но пример с CMS не взлетел, к сожалению...
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38347927
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Пытаюсь разобраться с примерами из КриптоПро JCP.
Сразу трабла: KeyStore.getInstance("HDImageStore") - не работает. В списке зарегистрированных тоже не числится. Это так должно быть или чего заимпортил неправильно?
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38349328
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAЯ простенький тест набросал, в котором шифруются данные ГОСТвым методом, но там используется реализация из TrustedJava, а Баунси ее, похоже, не видит... ((Я повторю: максимум, что может "The Legion of the Bouncy Castle" - стандартный pem (p12). Наверное, он даже умеет генерировать ключевую пару для этого криптоконтейнера и ГОСТ-алгоритмов.
Но Крипто Про в категорической форме использует только собственный формат криптоконтейнера.
Таким образом, получается замкнутый круг: если нет Крипто Про JCP, то читать его закрытый ключ мы не можем, а если есть - то BouncyCastle просто не нужен.
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38349475
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Basil A. SidorovWGAЯ простенький тест набросал, в котором шифруются данные ГОСТвым методом, но там используется реализация из TrustedJava, а Баунси ее, похоже, не видит... ((Я повторю: максимум, что может "The Legion of the Bouncy Castle" - стандартный pem (p12). Наверное, он даже умеет генерировать ключевую пару для этого криптоконтейнера и ГОСТ-алгоритмов.
Но Крипто Про в категорической форме использует только собственный формат криптоконтейнера.
Таким образом, получается замкнутый круг: если нет Крипто Про JCP, то читать его закрытый ключ мы не можем, а если есть - то BouncyCastle просто не нужен.ОК, понял. А что с примерами из JCP не подскажете (вопрос выше)? Почему не доступен KeyStore типа "HDImageStore"?
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38350373
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
WGAПочему не доступен KeyStore типа "HDImageStore"?Вы его настроили?
Пути указали абсолютные или относительные?
Если относительные, то ваше мнение о текущем каталоге совпадает с мнением приложения?
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38360261
WGA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
WGA
Гость
Basil A. SidorovWGAПочему не доступен KeyStore типа "HDImageStore"?Вы его настроили?
Пути указали абсолютные или относительные?
Если относительные, то ваше мнение о текущем каталоге совпадает с мнением приложения?Прошу прощения за долгое молчание, пришлось нав ремя крипто-про отложить.

Ответ на первый вопрос: нет, просто подключил jar-библиотеки к проекту. Как его надо настраивать? Где почитать? В офф. доке, приложенной к скачанному архиву, что-то не нашел про настройку.
При выполнении
Код: java
1.
Security.getAlgorithms("HDImageStore")

не наблюдается требуемого типа ключницы. И у меня, естественно, возникает исключение при
Код: java
1.
KeyStore.getInstance("HDImageStore")

непонятно пока...
...
Рейтинг: 0 / 0
КриптоПро: дешифрование
    #38362268
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Крипто Про JCP устанавливается в виде расширения и складывает свои потроха в ext.
Соответственно "просто подключить jar к проекту" недостаточно - необходимо установить в ту JRE/JDK, которую использует ваша среда для компиляции и запуска. Если я всё правильно понимаю, при этом не понадобится и подключать jar-ы.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / КриптоПро: дешифрование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]