![]() |
eXeL@B —› Вопросы новичков —› знатокам RSA |
. 1 . 2 . >> |
Посл.ответ | Сообщение |
|
Создано: 11 апреля 2013 22:25 · Поправил: BfoX · Личное сообщение · #1 ковыряю последний CrypKey RSA Tolls by tE по Public Exp считает Private Exp, а мне нужно наоборот кто может помочь проверить одну идею? есть: Private Exp. = 0xB3A791AF1DA1A5BB, Modulus N = 0x58554667001E6CEB, PRIME P = 0x18A677D, PRIME Q = 0x3955D46287 нужно посчитать Public Exp. ----- ...или ты работаешь хорошо, или ты работаешь много... ![]() |
|
Создано: 11 апреля 2013 22:39 · Поправил: reversecode · Личное сообщение · #2 |
|
Создано: 11 апреля 2013 22:44 · Поправил: Модератор · Личное сообщение · #3 А какая разница, считать D через E, если известно разложение N, или наоборот? 1 алгоритм должен работать. Ну и да, обычно E берётся достаточно стандартным. И разложение N обычно обозначается P и Q, в первом посте то ли что-то напутано, то ли хз откуда взялась D. reversecode пишет: d = (e ^ -1) mod n Там обратное берётся не по N, а по Эйлеру от N. ![]() |
|
Создано: 11 апреля 2013 22:44 · Личное сообщение · #4 |
|
Создано: 11 апреля 2013 22:54 · Личное сообщение · #5 |
|
Создано: 11 апреля 2013 22:57 · Поправил: Модератор · Личное сообщение · #6 |
|
Создано: 11 апреля 2013 23:00 · Поправил: DimitarSerg · Личное сообщение · #7 |
|
Создано: 11 апреля 2013 23:00 · Личное сообщение · #8 |
|
Создано: 11 апреля 2013 23:07 · Поправил: DimitarSerg · Личное сообщение · #9 |
|
Создано: 11 апреля 2013 23:07 · Поправил: Модератор · Личное сообщение · #10 reversecode пишет: выбор e, вообще то строго ограничен Если вдаваться в ограничения на E, то таких чисел слишком много, чтобы перебрать. Строго говоря, оно должно быть меньше Эйлера от Н и взаимно простое с ним. И на этом ограничения заканчиваются. А таких чисел дофига. Остальные ограничения, типа небольшого числа единичных битов в двоичной записи, приходят из число практических соображений, что так возводить в степень быстрее, но не более того. Так что я бы лучше РАЕ прошёлся. Меня больше смущает, что D>N, чего быть не может. ![]() |
|
Создано: 11 апреля 2013 23:35 · Личное сообщение · #11 Делал давно, некоторые числа повторяются с твоими: Только у меня порядок такой: Public Exponent (E), Modulus (N), Private Exponent(D) Как делал слабо помню (дело было больше 5 лет назад). Но должно быть просто. Скорее всего так: Факторим N, вставляем вместо паблик экспоненты приватную, нажимаем Calc D. И в поле приватной экспоненты получаем - нашу паблик экспоненту. Потом меняем их местами и снова нажимаем Calc D. С набором 0х10CD889542920DE3, 0хFAB3B5F3C60243FD, 0хA077EF, 0х18FF3BD36D3 - работает четко. А вот с первым примером не работает, возможно криво сдампилось, проверь еще раз ключики. ![]() |
|
Создано: 12 апреля 2013 07:32 · Поправил: BfoX · Личное сообщение · #12 DimitarSerg пишет: Вот тут Е = A6F98C3202BC3DAB, можете проверить. правильно bbuc да, ваши данные для старой таблицы crypkey до v7.3 у меня первые три набора - для crypkey v7.6+ у меня порядок такой: Private Exponent(D), Modulus (N), Prime (P), Prime (Q) нажать Calc D. не получится - ограничение числа не более 9999999999 ----- ...или ты работаешь хорошо, или ты работаешь много... ![]() |
|
Создано: 12 апреля 2013 09:22 · Поправил: DimitarSerg · Личное сообщение · #13 BfoX пишет: нажать Calc D. не получится - ограничение числа не более 9999999999 Способ с математикой и формулой ed=1 mod (p-1)(q-1) должен всегда прокатывать ;) Для примера: 0х7DEE2D279FC6CBDD, 0хE8F9B1360625C803, 0х6165DB5, 0х26459DE1D7 D = 0х7DEE2D279FC6CBDD (9074239947405708253) P = 0х6165DB5 (102129077) Q = 0х26459DE1D7(164376732119) e * 9074239947405708253 =1 mod (102129077-1)(164376732119-1) e * 9074239947405708253 =1 mod 16787643767110862968 Code:
PowerMod[9074239947405708253, -1, 16787643767110862968] Shift+Enter, вуаля add: Если не охота ставить математику, можно посчитать онлайн ![]() ----- ds ![]() |
|
Создано: 12 апреля 2013 09:37 · Личное сообщение · #14 BfoX пишет: нажать Calc D. не получится - ограничение числа не более 9999999999 Это ограничение старой версии. Вот более новая ![]() ![]() |
|
Создано: 12 апреля 2013 10:14 · Поправил: BfoX · Личное сообщение · #15 |
|
Создано: 12 апреля 2013 10:39 · Личное сообщение · #16 |
|
Создано: 12 апреля 2013 10:45 · Поправил: DimitarSerg · Личное сообщение · #17 BfoX пишет: на чём посоветуете реализовать? Я пишу онли Делфи+асм, так что много не насоветую. Но я бы решал с помощью FGInt, тем более там есть почти всё готовые функи, типа FGIntModExp, FGIntModInv Если дельфа подходит - могу наваять функу. add: или задача стоит еще и факторизировать в процессе выполнения ? ----- ds ![]() |
|
Создано: 12 апреля 2013 11:24 · Поправил: BfoX · Личное сообщение · #18 |
|
Создано: 12 апреля 2013 11:46 · Поправил: DimitarSerg · Личное сообщение · #19 |
|
Создано: 12 апреля 2013 12:20 · Поправил: Vovan666 · Личное сообщение · #20 Если нужно встроить факторизатор в свой проект, то в исходниках MIRACL есть примеры всех основных методов факторизации, они хоть и не шустрые, т.к. сам миракл не отличается скоростью, но на 64-битних числах думаю это не актуально. * brute.c/cpp - brute force division by small primes * brent.c/cpp - Pollard Rho method as improved by Brent * pollard.c/cpp - Pollard (p-1) method * williams.c/cpp - Williams (p+1) method * lenstra.c/cpp - Lenstra's Elliptic Curve method * qsieve.c/cpp - The Multiple polynomial quadratic sieve ![]() |
|
Создано: 12 апреля 2013 12:22 · Личное сообщение · #21 |
|
Создано: 12 апреля 2013 12:45 · Поправил: OKOB · Личное сообщение · #22 Вот на питоне наваял с вызовом msieve для факторизации. для работы нужны import re import subprocess import shlex для примера использую те-же значения что и в примере DimitarSerg D = 0x7DEE2D279FC6CBDD PQ = 0xE8F9B1360625C803 результат p = 102129077 q = 164376732119 e = 13599029403125677005 Для автомата нужно числа в массивы набить и сделать цикл. ![]() ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 12 апреля 2013 13:02 · Поправил: OKOB · Личное сообщение · #23 Сделал цикл на данных из первого поста d = 0x8521EBA4563F6D91 p = 0x1DEF63F9 q = 0x3E8225E8B e = 0x361212E505A8041 d = 0x840E8442916781A7 p = 0xC29789 q = 0xBBF792605B e = 0x1CBB2A39B1EDD697 d = 0xA510CD4E648160D1 p = 0x3D05E9 q = 0x3C8DEC1AB49 e = 0xDEFCC2A24F03971 d = 0x5A01294BBAD47089 p = 0x3B3BDC5 q = 0x1A345E32C7 e = 0x2CA42483BE7E8F41 d = 0x61451C6659D58089 p = 0x4601E7 q = 0x16F9E64EA4B e = 0x508E11FEBC2FECFD d = 0x7DEE2D279FC6CBDD p = 0x6165DB5 q = 0x26459DE1D7 e = 0xBCB97530FF65FBCD d = 0x10CD889542920DE3 p = 0xA077EF q = 0x18FF3BD36D3 e = 0xA6F98C3202BC3DAB ЗЫ: Добавил для проверки крипт/декрипт ![]() ----- 127.0.0.1, sweet 127.0.0.1 ![]() |
|
Создано: 12 апреля 2013 23:25 · Личное сообщение · #24 |
|
Создано: 15 апреля 2013 09:10 · Поправил: drone · Личное сообщение · #25 |
|
Создано: 15 апреля 2013 15:40 · Поправил: BfoX · Личное сообщение · #26 drone подключил miracl, но он не хочет брать часть данных в нех-виде ![]() пример 0xA510CD4E648160D1, 0xE6F3725257025271 ----- ...или ты работаешь хорошо, или ты работаешь много... ![]() |
|
Создано: 15 апреля 2013 17:27 · Личное сообщение · #27 |
|
Создано: 15 апреля 2013 19:13 · Поправил: BfoX · Личное сообщение · #28 |
|
Создано: 15 апреля 2013 20:10 · Личное сообщение · #29 |
|
Создано: 17 апреля 2013 00:05 · Личное сообщение · #30 |
. 1 . 2 . >> |
![]() |
eXeL@B —› Вопросы новичков —› знатокам RSA |
Эта тема закрыта. Ответы больше не принимаются. |