Статус: Участник
Группы: Участники
Зарегистрирован: 10.02.2011(UTC) Сообщений: 11 Откуда: Москва
|
Добрый день. Стоит задача - подписывать web-анкету и сохранять подпись. Сделана подпись на CAPICOM, затем она передается в $_POST (php) и сохраняется в файле на сервере (отдельно два файла - *.msg - файл со строкой, которую подписывали и *.msg.sgn - подпись к этой строке. На сервере стоит Free BSD 8.0 x64, CryptoPro CSP 3.6 (для 64-й системы). Утилитой пытаюсь далее проверить подпись: cryptcp -vsignf *.msg выдает: Код:CryptCP 3.34 (c) "Крипто-Про", 2002-2010.
Утилита командной строки для защиты данных.
Будет использован следующий сертификат:
Субъект:GNIVC FNS RUS, Удостоверяющий центр, ФГУП ГНИВЦ ФНС России, Москва, RU, ucinfo@gnivc.ru
Действителен с 27.09.2006 09:29:57 по 27.09.2012 09:38:27
Цепочки сертификатов проверены.
Папка './':
signVXkNR0.msg... Ошибка чтения файла.
[ErrorCode: 0x20000065]
В чем может быть проблема? По форуму лазил.. Так понял, что причиной может быть то, что CAPICOM после подписи ещё что-то делает с ней? Так ли это и какой есть из этого выход?
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.02.2011(UTC) Сообщений: 11 Откуда: Москва
|
Сорри, промазал - не тот файл открывал (тот уже потерт был, нет такого файла) ошибка: Код:signDVJ29m.msg... Подпись повреждена.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 25.12.2007(UTC) Сообщений: 1,732 Откуда: КРИПТО-ПРО Поблагодарили: 177 раз в 168 постах
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.02.2011(UTC) Сообщений: 11 Откуда: Москва
|
Разобрались. Не понятно только, почему нельзя было в cryptcp добавить в команду -vsignf какой-нибудь флаг, который бы указывал, что сообщение пришло от CAPICOM и то, что нужно добавлять по байту после символа. Почему бы ему было самому это не делать. При поиске натыкался ещё тут на это - в самом конце. код в php: Код: for($i=0; isset($examp[$i]); $i++)
{
$newStr .= $examp[$i].chr(0x00);
}
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.02.2011(UTC) Сообщений: 11 Откуда: Москва
|
Здравствуйте ещё раз. С данным алгоритмом возникла проблема при проверке подписанного, если в подписанном присутствуют русские символы. Как быть в этом случае? Думали, что может быть добавляли после каждого байта 0x00, а в случае с русскими буквами, которые используют 2 байта, это не прокатило. В итоге перевели в cp1251 - добавляются 0x00 после каждого символа, но cryptcp все равно не помогает.. Есть ли какие-то проблемы с русскими символами в подписываемом содержимом при проверке cryptcp? Может подскажите чем-нибудь
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 10.02.2011(UTC) Сообщений: 11 Откуда: Москва
|
Как оказалось, JavaScript конвертирует изначально в кодировку UTF-16LE, что в дальнейшем приводит к тому, что обязательно нужно кодировать исходное сообщение в неё. Для php:
$hash = mb_convert_encoding($hash,'UTF-16LE','UTF-8') и все проверяется) спасибо за помощь (тут отписал для других, и чтобы закрыть вопрос)
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close