Доброго времени суток =). Написал на D ( http://digitalmars.com/d/2.0/index.html ) библиотеку для работы с большими числами, и сейчас пишу свою реализацию RSA (без генератора ключей пока что). Скинте, пожалуйсто какие-нибудь работующие ключи RSA - для тестирования. И ещё вопрос: p - простое Как быстро найти псевдослучайное k взаимопростое с p-1? (для Эль Гамаля) Или возможно только генерировать такие k до тех пор пока (по алгоритму Евклида) НОД (k,p-1) != 1 ? P.S. ещё школьник
http://creatorcray.googlepages.com/BNCalc.rar командная строка: bncalc -hex PQbits=256 P=prime(PQbits/2) Q=prime(PQbits/2) PQ=P*Q E=0x10001 D=invmod(E,lcm(P-1,Q-1)) testValue=0xbadf00d encrypted=powmod(testValue,E,PQ) decrypted=powmod(encrypted,D,PQ) decrypted-testValue и генерь сколько угодно Единственный минус - тут не проверяется условие на предмет взаимной простоты E и Phi - условий в калькуляторе нету так что валидны будут любые значения для которых decrypted == testValue
CreatorCray Спасибо конечно, только Wine c ним не работает : ( Если нетрудно скинь p, q, в шеснадцатеричной или восьмиричной please
Поищи мой релиз RSA, указание на местоположение в ветке "Поделитесь пжалста ..." Молодец конечно, что сам написал, только сто пудов гарантии, что у тебя это будет работать в тысячу раз медленнее нормы, или в сто уж точно, как пить дать. Ибо, сложное это на самом деле дело, весьма сложное... А экспоненту генери, пока действительно алгоритм Евклида сможет найти обратный элемент. Кста, мой релиз работает с любым количеством сомножителей, а не только с двумя p и q. Если выбрать один единственный сомножитель, будут тебе два ключа с одним общим p и двумя экспонентами для кодирования и декодирования. p.s. говорят, мои проги под wine не работают, сам не проверял Вот, сгенерил: p= E12D1676 E8B18E36 BC1A8AA8 6A4E6FAA 7F0CAE70 AAFC6B8D F386922D DEA323C5 B53B1E87 0A23CFE3 4AFF8DB6 E1948456 6FA721F5 CC02921F 5BFAD05C EB2AA37B FD5A0235 F9FEAAF0 D3356011 DF4649D1 643CAE11 23D54862 4DF08740 9D876043 7F42E735 364C2192 236B390D 51735D90 264B7CA1 DEC70386 00CB6571 66745AC5 e= 55677892 C6503CFC 186E07E3 7FDB4119 655D6407 8864EDCB 70C8B67F 21BD7E46 D15D5CC5 6D7A9652 6D0D8773 CF655F44 63021506 7B8A27B3 6E09716D 6D8A62AF 7EBAED8F 05C2EA68 E3432D77 741D666A 45D4CF39 9692BA94 DB474ED2 7F7FC8BD 58C6E85E 4E4608ED 47FD1C84 DD7CCA39 4B8E4584 81A9984B D48B4851 8C2A6629 d= 8855D798 AA6FDA73 CFAC4CBC 271AB8EA BCB0039F AB4E4967 BBD8C668 99BD6C6B 346152B2 212724F5 B5A50DD8 1BAE6D0D 503D20E0 22575A5A 9A197332 E7CF9130 01578FD5 9A29AC39 484B1523 E1A3CD31 1E3F82DC F06DAA81 84F63A1F DAE2A9F1 3B2C22BB C6EC31CA 4F248FBA 253A24DD 1BA3FD43 CFAB1608 6EC0468A D2629845