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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline kerby  
#1 Оставлено : 21 марта 2019 г. 11:05:20(UTC)
kerby

Статус: Новичок

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

Сказал(а) «Спасибо»: 3 раз
Коллеги, здравствуйте

Есть сертификат, провожу по нему процесс шифрации/дешифрации, чтобы убедиться, что всё работает.

процесс

Есть код на PHP с использованием phpcades (практически из примера http://cpdn.cryptopro.ru...s/phpcades-samples.html) для шифрования:

Код:
function test($filename)
{
    try {
        $cert = SetupCertificate(
            CURRENT_USER_STORE,
            "My",
            STORE_OPEN_READ_ONLY,
            CERTIFICATE_FIND_SUBJECT_NAME,
            'xxxxxxx',
            0,
            1
        );

        if (!$cert) {
            return "Certificate not found";
        }


        $cp = new \CPEnvelopedData();
        $content=file_get_contents($filename);
        $cp->set_Content($content);
        $cp->get_Recipients()->Add($cert);
        print $cp->Encrypt(0);

        return 1;
    } catch (Exception $e) {
        printf($e->getMessage());
        return 0;
    }
}

test($argv[1]);


Если с его помощью зашифровать файл, то он успешно расшифровывается командой cryptcp как если бы был зашифрован той же командой

Но... Есть код для расшифровки

Код:
function test($filename)
{
    try {
        $cert = SetupCertificate(
            CURRENT_USER_STORE,
            "My",
            STORE_OPEN_READ_ONLY,
            CERTIFICATE_FIND_SUBJECT_NAME,
            'xxxxxxx',
            0,
            1
        );

        if (!$cert) {
            return "Certificate not found";
        }

        $cp = new \CPEnvelopedData();
        $content=file_get_contents($filename);
        $cp->get_Recipients()->Add($cert);
        $cp->Decrypt($content);
        var_dump($cp->get_Content());

        return 1;
    } catch (Exception $e) {
        printf($e->getMessage());
        return 0;
    }
}

test($argv[1]);


Который при использовании с зашифрованным предыдущей функцией контентом (или файлом через cryptcp) выдает некие иероглифы (буквально).

Вопрос: что я делаю не так? Казалось бы элементарно вроде как. Но наверняка есть нюанс же...

Заранее спасибо
Offline Андрей Писарев  
#2 Оставлено : 21 марта 2019 г. 11:18:22(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Здравствуйте.

Попробуйте указать CADESCOM_BASE64_TO_BINARY перед присвоением контента (закодированного в base64)

Особенности работы с бинарными данными
Цитата:

Это касается следующих методов: CadesSignedData.Sign, CadesSignedData.CoSign, CadesSignedData.SignCades, CadesSignedData.CoSignCades, CadesSignedData.EnhanceCades, CPAttribute.ValueEncoding, EncodedData.Value , Certificate.Export, EnvelopedData.Encrypt.
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
kerby оставлено 21.03.2019(UTC)
Offline Андрей Писарев  
#3 Оставлено : 21 марта 2019 г. 11:23:02(UTC)
Андрей *

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

Группы: Участники
Зарегистрирован: 26.07.2011(UTC)
Сообщений: 12,691
Мужчина
Российская Федерация

Сказал «Спасибо»: 500 раз
Поблагодарили: 2044 раз в 1585 постах
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
kerby оставлено 21.03.2019(UTC)
Offline kerby  
#4 Оставлено : 21 марта 2019 г. 11:42:23(UTC)
kerby

Статус: Новичок

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

Сказал(а) «Спасибо»: 3 раз
Автор: Андрей Писарев Перейти к цитате
Здравствуйте.

Попробуйте указать CADESCOM_BASE64_TO_BINARY перед присвоением контента (закодированного в base64)

Особенности работы с бинарными данными
Цитата:

Это касается следующих методов: CadesSignedData.Sign, CadesSignedData.CoSign, CadesSignedData.SignCades, CadesSignedData.CoSignCades, CadesSignedData.EnhanceCades, CPAttribute.ValueEncoding, EncodedData.Value , Certificate.Export, EnvelopedData.Encrypt.


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