Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Замечание 13.06.06 12:55 Число просмотров: 2905
Автор: amirul <Serge> Статус: The Elderman
|
> Заранее извиняюсь, что не видел в глаза этот cryptlib, но > для решения задачи это и не надо. Достаточно С знать и, > собственно, RSA. > Шифровка не может быть в buffer по нескольким причинам: > 1. Нехорошо "портить" исходный текст.
Это не проблема
> 2. buffer, указатель, указывающий на константу. При > ожидаемой модификации будет segmentation fault.
Не факт. Принимаемое значение скорее всего (char *), а не (char[]) и не (const char *). Очень многие библиотечные функции для возвращаемого значения используют вот такую вот пару буфер/длина. То что на самом деле буфер - константа - это не проблема библиотеки, а проблема клиента этой библиотеки (вполне возможно где то в описалове это указано)
> 3. Шифровка будет соизмерима с длиной ключа, а не с > исходным текстом. Так что она просто не поместится в > buffer, если strlen(buffer)<sizeof(cryptContext->key) > (извиняюсь за корявое неравенство).
Вот это 100%. Причем вполне возможно, что шифрование не происходит именно по этой причине. Просто переданный буфер меньше размера ключа и библиотека возвращается с ошибкой.
> 4. По хорошему функция шифрования должна возвращать > шифровку и (полагаю) должна быть описана примерно так: char > *cryptEncrypt( cryptContext, buffer, strlen(buffer) ); > Возможно и другие варианты, например cryptContext->cifer > и будет указателем на зашифрованый текст.
Как по мне возврат буфера - плохая идея, а вот возврат шифровки в контексте - вполне возможный вариант. Если так, то скорее всего должна быть еще и функция-getter для сокрытия внутренностей контекста.
|
|
|