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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Алексей Вдовин  
#1 Оставлено : 24 декабря 2024 г. 14:14:20(UTC)
Алексей Вдовин

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2021(UTC)
Сообщений: 261
Российская Федерация
Откуда: Новосибирск

Сказал(а) «Спасибо»: 78 раз
Поблагодарили: 1 раз в 1 постах
Приветствую коллеги!

Задача - получить хеш файла, полный аналог результата скрипта
Код:

exec('/opt/cprocsp/bin/amd64/cpverify -mk ' . __FILE__ . ' -alg GR3411_2012_256', $output);


Пробую так
Код:

            fileContent = file.getBytes();
            Security.addProvider(new JCP());
            MessageDigest digest = MessageDigest.getInstance(JCP.GOST_DIGEST_2012_256_NAME, JCP.PROVIDER_NAME);
            digest.update(fileContent);
            return new String(digest.digest());


в результате bash скрипт возвращает
8B01AA5665B7DF3E180DF7279200786B06B5438B744C975D89140DF277218AEB

а java строку в непонятной кодировке
��Ve��> �'�xk�C�tL�]� �w!��

судя по количеству символов - в первом это строка из кодов символов, во втором сами символы
вопрос - как преобразовать к такому же виду как в bash скрипте?
Offline Андрей *  
#2 Оставлено : 24 декабря 2024 г. 15:04:25(UTC)
Андрей *

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

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

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

digest.digest() не как строку смотреть, а как набор байтов и для вывода использовать hex значения?
Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Алексей Вдовин оставлено 24.12.2024(UTC)
Offline Алексей Вдовин  
#3 Оставлено : 24 декабря 2024 г. 17:35:35(UTC)
Алексей Вдовин

Статус: Активный участник

Группы: Участники
Зарегистрирован: 28.12.2021(UTC)
Сообщений: 261
Российская Федерация
Откуда: Новосибирск

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

digest.digest() не как строку смотреть, а как набор байтов и для вывода использовать hex значения?


Спасибо, получил что хотел

код:
Код:

            fileContent = file.getBytes();
            Security.addProvider(new JCP());
            MessageDigest digest = MessageDigest.getInstance(JCP.GOST_DIGEST_2012_256_NAME, JCP.PROVIDER_NAME);
            digest.update(fileContent);
            byte[] digestArr = digest.digest();
            StringBuilder hexString = new StringBuilder();
            for (byte b : digestArr) {
                hexString.append(String.format("%02X", b));
            }
            return hexString.toString();
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.