Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
Считаю хэш от одинх и тех же данных на C# и Javascript Данные: в xml <test></test> в hex EE46FB595BFF12F5F62EC578A94D33EBF0C38CB02959A6BC5EA30BF8E5E12C00 C# код по расчету хэша MemoryStream memoryStream=new MemoryStream(); using (FileStream file = new FileStream(@"c:\temp\new_sign.txt", FileMode.Open, FileAccess.Read)) { byte[] bytes = new byte[file.Length]; file.Read(bytes, 0, (int)file.Length); memoryStream.Write(bytes, 0, (int)file.Length); } byte[] test2 =memoryStream.ToArray(); HashAlgorithm myhash = HashAlgorithm.Create("GOST3411"); byte[] hashResult = myhash.ComputeHash(test2); return BitConverter.ToString(hashResult).Replace("-", ""); Получаю значение: EE46FB595BFF12F5F62EC578A94D33EBF0C38CB02959A6BC5EA30BF8E5E12C00 Считаю на клиенте с помощь Javascript от тех же данных: Код:
var hashObject = CreateObject("CAdESCOM.HashedData");
hashObject.Algorithm = CADESCOM_HASH_ALGORITHM_CP_GOST_3411;
hashObject.Hash(hexData);
var result = hashObject.Value;
Получаю 75ABFA78D392AA40470AE5C6DEA8F4E8E9CE10B768E8E2F495ADEB83EFBEBD18 Из-за чего может быть такое расхождение результатов? Отредактировано пользователем 22 июля 2013 г. 17:30:47(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Проверьте вначале взяв хеш от пустой строки:
base64: mB5fPKMMhBSHgw+E+0M+E6wRAVabnBNYSsSDI0zWVsA= hex: 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
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
Проверил. Сервеный хэш и Base64 совпадают, клинетский хэш тоже совпадает, но клиентское base64.encode выдает не то значение.
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
Как я уже говорил - проверьте base64 библиотеку. П.С. Base64 случайно не от HEX берете? Отредактировано пользователем 23 июля 2013 г. 10:18:57(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
брал от hex. для пустой строки поставил перед base64.encode вызов utils.hexToString вернуло корректное значение dmishin, подскажите пожалуйста, после получения значения var signatureHex = rawSignature.SignHash(hashObject, certificate); какая последовательность операций правильная для следующих действий: reverse, hexToString, base64.encode? пытаюсь брать хэш на клиенте от hex представления данных(как я понимаю, именно от hex он и должен браться). пример исходных данных 3C746573743E3C2F746573743E однако клиентский хэш не сходится с серверным. если брать от пустой строки, то хэши совпадают. в чем может быть ошибка? Отредактировано пользователем 23 июля 2013 г. 10:51:31(UTC)
| Причина: Не указана
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
Цитата: пытаюсь брать хэш на клиенте от hex представления данных(как я понимаю, именно от hex он и должен браться). пример исходных данных 3C746573743E3C2F746573743E однако клиентский хэш не сходится с серверным. если брать от пустой строки, то хэши совпадают. в чем может быть ошибка?
Помогло передавать данные для хэширования кодированные в base64 и выставить при этом у на клиенте флаг hashObject.DataEncoding = CADESCOM_BASE64_TO_BINARY; После этого хэши стали совпадать. Остается актуальным вопрос насчет порядка вызова операций reverse, hexToString, base64.encode для signatureHex
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 07.08.2012(UTC) Сообщений: 123
Сказал(а) «Спасибо»: 4 раз Поблагодарили: 6 раз в 6 постах
|
|
1 пользователь поблагодарил dmishin за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 16.07.2013(UTC) Сообщений: 35 Откуда: Пермь Сказал(а) «Спасибо»: 9 раз
|
Ура. Получилось. Правильный порядок utils.reverse(utils.hexToString(signatureHex)) dmishin, спасибо огромное!!! без вас бы ничего не вышло.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close