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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Ann1_2020  
#1 Оставлено : 9 ноября 2020 г. 11:31:34(UTC)
Ann1_2020

Статус: Участник

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

Здравствуйте. Имеется строка в Base64, при раскодирование получается байтовое представление, зашифрованный по ГОСТ 28147-89.
Код для расшифровки:

Код:

public class JCPProvider{


public MyProvider() throws Exception {
        addProvider("ru.CryptoPro.JCP.JCP");
        addProvider("ru.CryptoPro.reprov.RevCheck");

        CAdESUtility.initJCPAlgorithms();
        JCPXMLDSigInit.init();

        System.setProperty("com.sun.security.enableCRLDP", "true");
        System.setProperty("com.ibm.security.enableCRLDP", "true");
        System.setProperty("ru.CryptoPro.reprov.enableAIAcaIssuers", "true");
    }

public String decrypt(byte[] content, X509Certificate cert, PrivateKey privateKey) throws Exception {
        EnvelopedSignature signature = new EnvelopedSignature(new ByteArrayInputStream(content));
        signature.addKeyAgreeRecipient();
        ByteArrayOutputStream decryptedByteDataStream = new ByteArrayOutputStream();
        signature.decrypt(cert, privateKey, decryptedByteDataStream);
        byte[] decryptedData = decryptedByteDataStream.toByteArray();
        decryptedByteDataStream.flush();
        decryptedByteDataStream.close();
        return new String(decryptedData);
}
}


Получаю ошибку:

Код:
Caused by: ru.CryptoPro.CAdES.exception.EnvelopedException: Input cipher initiation failed
	at ru.CryptoPro.CAdES.pc_1.pc_1.cl_0.<init>(Unknown Source)
	at ru.CryptoPro.CAdES.pc_1.pc_1.cl_1.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)
	... 118 common frames omitted
Caused by: java.security.NoSuchProviderException: No such provider: Crypto
	at java.base/javax.crypto.Cipher.getInstance(Cipher.java:622)
	... 123 common frames omitted




Что я делаю не так?

Offline Евгений Афанасьев  
#2 Оставлено : 9 ноября 2020 г. 11:42:19(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,006
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Здравствуйте. Как сказано в ошибке, нет провайдера Crypto, не добавили его. Обычно добавляется так: Security.addProvider(new CryptoProvider());
Offline Ann1_2020  
#3 Оставлено : 9 ноября 2020 г. 11:44:07(UTC)
Ann1_2020

Статус: Участник

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

А откуда взять этот класс - CryptoProvider?
Offline Евгений Афанасьев  
#4 Оставлено : 9 ноября 2020 г. 13:38:40(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 4,006
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 21 раз
Поблагодарили: 715 раз в 675 постах
Среда, где вы пишете код, должна предложить импорт класса CryptoProvider, если модуль JCryptoP.jar (в нем класс) подключён к проекту.
Offline Ann1_2020  
#5 Оставлено : 9 ноября 2020 г. 14:18:22(UTC)
Ann1_2020

Статус: Участник

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

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