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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Ёжик  
#1 Оставлено : 1 декабря 2023 г. 5:27:24(UTC)
Ёжик

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

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

https://meganorm.ru/Data2/1/4293788/4293788459.htm хэш (256 бит) функция должна возвращать следующий результат:
строка: 01323130393837363534333231303938373635343332313039383736353433323130393837363534333231303938373635343332313039383736353433323130
хэш: 00557be5e584fd52a449b16Ь0251d05d27f94ab76cbaa6da890b59d8ef1е159d
У нас же другой результат:
строка: 01323130393837363534333231303938373635343332313039383736353433323130393837363534333231303938373635343332313039383736353433323130
хэш: 066a8f6264dce2e37169089b2f685d90bbff911dbc4f4ae36ced9c17d3e820a7
код, который мы используем:
public static void main(String[] args) {
try {
System.out.println("CryptoPro start initialization");
System.setProperty("file.encoding", "UTF-8");
Security.addProvider(new JCSP()); // провайдер JCSP
Security.addProvider(new RevCheck());// провайдер проверки сертификатов JCPRevCheck
//(revocation-провайдер)
Security.addProvider(new CryptoProvider());// провайдер шифрования JCryptoP
System.out.println("CryptoPro initialized");

} catch (Exception e) {
System.err.println("Exception in initializing crypto pro : "+ e);
} catch (Error er) {
System.err.println("Error in initializing crypto pro : "+ er);
}

HashMessageDigester digester = new HashMessageDigester();
String hexString = "01323130393837363534333231303938373635343332313039383736353433323130393837363534333231303938373635343332313039383736353433323130";
try (InputStream input = new ByteArrayInputStream(hexString.getBytes())) {
IOUtils.copy(input, digester);
}
System.out.printf(String.format("\nстрока: %s \nхэш: %s\n",hexString, digester.getHashes().getGOST_3411_2012_256()));
}

public class HashMessageDigester extends OutputStream {
private List<MessageDigest> digests = Collections.singletonList(
MessageDigest.getInstance(JCP.GOST_DIGEST_2012_256_NAME)
);

@Override
public void write(int i) throws IOException {
for (MessageDigest digest : digests) {
digest.update((byte) i);
}
}

public JcpHashes getHashes() {
Map<String, String> result = new HashMap<>();
for (MessageDigest digest : digests) {
if (result.put(digest.getAlgorithm(), Hex.encodeHexString(digest.digest())) != null) {
throw new IllegalStateException("Duplicate key");
}
}

return new JcpHashes(
result.get(JCP.GOST_DIGEST_2012_256_NAME)
);
}
}
Зависимости:
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-asn1rt</artifactId>
<version>5.0.40363-A</version>
</dependency>
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-jcp</artifactId>
<version>5.0.40363-A</version>
</dependency>
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-xml</artifactId>
<version>5.0.40363-A</version>
</dependency>
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-jcrypto</artifactId>
<version>5.0.40363-A</version>
</dependency>
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-jcpRevCheck</artifactId>
<version>5.0.40363-A</version>
</dependency>
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-asn1p</artifactId>
<version>5.0.40363-A</version>
</dependency>
<dependency>
<groupId>ru.cryptopro.jcp</groupId>
<artifactId>jcp-jscp</artifactId>
<version>5.0.40363-A</version>
</dependency>
Что мы делаем не так?

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