Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
|
доктор, меня все игнорируют... 26.09.02 12:33 Число просмотров: 2095
Автор: ggg <ggg> Статус: Elderman
|
...следующий !
разобрался
шифруемое число должно быть меньше n (n=p*q)
т.е. шифровать можно не 512 бит, а только 511
нигде в описаниях RSA я такого ограничения не встречал
|
<theory>
|
проблемы с RSA (Cryptlib, который Copyright Peter Gutmann) 25.09.02 16:29
Автор: ggg <ggg> Статус: Elderman
|
может я чего то не понимаю, но оно у меня глючит
1) генерирую пару ключей (rsaGenerateKey(); 512 бит)
2) в цикле:
а) генерирую случайные данные (512 бит)
б) шифрую (rsaEncrypt())
в) расшифровываю (rsaDecrypt())
г) сравниваю с тем что было
примерно в 5% случаев результат не совпадает
как такое может быть?
...щас буду пробовать с другой библиотекой
|
|
доктор, меня все игнорируют... 26.09.02 12:33
Автор: ggg <ggg> Статус: Elderman
|
...следующий !
разобрался
шифруемое число должно быть меньше n (n=p*q)
т.е. шифровать можно не 512 бит, а только 511
нигде в описаниях RSA я такого ограничения не встречал
|
|
в OpenSSL та же фигня. в Crypto++ всё работает 25.09.02 21:40
Автор: ggg <ggg> Статус: Elderman
|
наверно проблема где то в библиотеке BIGNUM
|
| |
опять сам с собой разговариваю :) 25.09.02 21:51
Автор: ggg <ggg> Статус: Elderman
|
хоть бы кто выразил свои мысли
вдруг что умное появится
ведь обе эти библиотеки очень известны, неужели и правда в них глюк
или это я что то не понимаю
|
| | |
может это кто-нибудь знает... 26.09.02 00:25
Автор: ggg <ggg> Статус: Elderman
|
в Crypto++ есть ограничение на размер шифруемого блока (гораздо меньше размера ключей, например не 512 бит, а 22 байта)
и шифруемые данные дополняются другими данными
когда я попытался напрямую засунуть свой блок, то получился эффект как и в cryptlib & openssl (не всегда правильно расшифровывались данные)
разве на вход RSA (в качестве шифруемого текста) можно подавать не любое число ?
я нигде в описаниях RSA не видел ничего об этом
|
| | | |
а версии бибок какие? 27.09.02 22:36
Автор: vaborg <Israel Vaborg> Статус: Elderman
|
|
| | | | |
всё свежее 28.09.02 22:24
Автор: ggg <ggg> Статус: 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, даже если сначала было меньше
т.е. в любом случае оно будет обрезаться
|
| | | | | | | |
Все просто 03.10.02 17:49
Автор: NickP Статус: Незарегистрированный пользователь
|
> правильно ли я понимаю, что M^e mod n значит, что M > возводится в степнь e, а потом обрезается по n ?
Правильно.
> если да, то при возведении M в степень, оно же может стать > гораздо больше n, даже если сначала было меньше > т.е. в любом случае оно будет обрезаться
Так-то оно конечно так, но алгоритм на этом и построен. Проблемма не
в том, что он не может обработать число большее n, проблемма в том,
что _на выходе_ не может получиться число больше чем n.
Но если ты например точно знаешь, что шифровалось число большее n,
и после расшифровки к результату просто добавишь n, то должно
получиться то число которое ты шифровал.
|
| | | | | | | | |
дошло :) спасибо 03.10.02 19:35
Автор: ggg <ggg> Статус: Elderman
|
|
|
|