в Crypto++ есть ограничение на размер шифруемого блока (гораздо меньше размера ключей, например не 512 бит, а 22 байта)
и шифруемые данные дополняются другими данными
когда я попытался напрямую засунуть свой блок, то получился эффект как и в cryptlib & openssl (не всегда правильно расшифровывались данные)
разве на вход RSA (в качестве шифруемого текста) можно подавать не любое число ?
я нигде в описаниях RSA не видел ничего об этом
в Crypto++ есть ограничение на размер шифруемого блока (гораздо меньше размера ключей, например не 512 бит, а 22 байта)
и шифруемые данные дополняются другими данными
когда я попытался напрямую засунуть свой блок, то получился эффект как и в cryptlib & openssl (не всегда правильно расшифровывались данные)
разве на вход RSA (в качестве шифруемого текста) можно подавать не любое число ?
я нигде в описаниях RSA не видел ничего об этом
а версии бибок какие?27.09.02 22:36 Автор: vaborg <Israel Vaborg> Статус: Elderman
просто шифровать надо не, например, 512 бит, а 511
я потом проверил - глюки были как раз когда превышалось значение n
в обычной реализации все эти библиотеки это или обрабатывают или возвращают ошибку
просто я расковырял их - мне нужен был только RSA - вот они и стали слегка по другому работать :)
почему на один бит меньше - я точно не знаю
я не шарю в этом
но это довольно логично, что после шифрования количество информации не может увеличиваться
а так как число-шифр может быть меньше 2^512-1, то и шифровать надо с запасом меньшее число
Все просто03.10.02 09:46 Автор: NickP Статус: Незарегистрированный пользователь
> почему на один бит меньше - я точно не знаю > я не шарю в этом
Элементарно, Ватсон! Шифрование/дешифрование RSA представляет
собой возведение данных в степень по модулю q. Соответственно если
число превышает q, оно просто обрезается.
Все просто03.10.02 12:50 Автор: ggg <ggg> Статус: Elderman
> правильно ли я понимаю, что M^e mod n значит, что M > возводится в степнь e, а потом обрезается по n ?
Правильно.
> если да, то при возведении M в степень, оно же может стать > гораздо больше n, даже если сначала было меньше > т.е. в любом случае оно будет обрезаться
Так-то оно конечно так, но алгоритм на этом и построен. Проблемма не
в том, что он не может обработать число большее n, проблемма в том,
что _на выходе_ не может получиться число больше чем n.
Но если ты например точно знаешь, что шифровалось число большее n,
и после расшифровки к результату просто добавишь n, то должно
получиться то число которое ты шифровал.
дошло :) спасибо03.10.02 19:35 Автор: ggg <ggg> Статус: Elderman