Статус: Новичок
Группы: Участники
Зарегистрирован: 13.03.2014(UTC) Сообщений: 1 Откуда: Новосибирск
|
У меня имеются две программы, которые высчитывают хэш-код строки и каждый из них считает хэш по разному: (js обращение к CADES плагину) Код:
var oHashedData = CreateObject("CAdESCOM.HashedData");
oHashedData.Algorithm = 100; // CADESCOM_HASH_ALGORITHM_CP_GOST_3411
oHashedData.Hash("");
oHashedData.Value
"981E5F3CA30C841487830F84FB433E13AC1101569B9C13584AC483234CD656C0"
var oHashedData = CreateObject("CAdESCOM.HashedData");
oHashedData.Algorithm = 100; // CADESCOM_HASH_ALGORITHM_CP_GOST_3411
oHashedData.Hash("1");
oHashedData.Value
"C650C1D10273FD67B908BD64A24427BAD360570BF053AD07FAC606D6FE3F25B7"
(Java + jcp lib) Код:
public static void main(String[] args) throws Exception {
testDigest("1");
testDigest("");
}
private static void testDigest(String s) throws Exception {
ByteArrayInputStream stream = new ByteArrayInputStream(s.getBytes());
MessageDigest digest = java.security.MessageDigest.getInstance("GOST3411");
DigestInputStream digestStream =
new DigestInputStream(stream, digest);
while (digestStream.available() != 0) digestStream.read();
byte[] resultBytes = digest.digest();
System.out.println("result hash[" + s + "]: " + Array.toHexString(resultBytes));
}
Результат: Код:result hash[1]: 5E E4 B6 35 3B E6 19 04 73 DB 5D 56 D2 B5 61 C9 61 D0 74 8A 74 CD 55 C4 19 E7 AF 15 57 D1 26 AB
result hash[]: 98 1E 5F 3C A3 0C 84 14 87 83 0F 84 FB 43 3E 13 AC 11 01 56 9B 9C 13 58 4A C4 83 23 4C D6 56 C0
Как видно хэш для пустой строки считается одинаково, но для строки "1" появляется разница, равно как и для любой другой строки, собственно проверка подписи по хэшу у меня проходит, но из-за разницы в расчете самого хэша толку с этого нет. Подскажите, пожалуйста, почему оно так получается?
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,001 Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 713 раз в 673 постах
|
Здравствуйте. Вероятно, отличаются кодировки исходных данных. |
|
|
|
|
Статус: Сотрудник
Группы: Администраторы, Участники Зарегистрирован: 10.12.2008(UTC) Сообщений: 924 Откуда: Крипто-Про Поблагодарили: 99 раз в 95 постах
|
Для того, чтобы при помощи КриптоПро ЭЦП Browser plug-in вычислить хэш-значение бинарных данных нужно предварительно закодировать их в BASE64 и указать кодировку BASE64_TO_BINARY. Прибегать к BASE64 приходится потому, что у нас нет возможности корректно передавать произвольные бинарные данные из браузера в плагин и обратно. Строки в плагине все передаются в кодировке UTC2 LE
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close