Page 1 of 1

potrzebuję pomocy.

Posted: 12 June 2010, 13:13
by Mały
Witam,
Więc bez ogródek, piszę z nadzieją na pomoc scenowych informatyków, a wiem, że paru tu jest. Mam do napisania projekt program umożliwiający generowanie kluczy, szyfrowanie i deszyfrowanie plików przy pomocy RSA. Czas się zbliża, a ja nadal nie wiem co z tym zrobić :(

Jakby znalazł się ktoś kto kiedyś coś takiego pisał (albo coś podobnego), byłbym naprawdę wdzięczny za udostępnienie kodu, a przynajmniej części zawierających arytmetykę wielkich liczb, odwrotność modularną czy testy pierwszości wielkich liczb i algorytm szybkiego potęgowania modulo :D wiem, mało nie wymagam, ale taki jest projekt. Ewentualnie udostępniony kod nie będzie wyklorzystany w żadnych komercyjnych celach, ani w żadnych innych, tylko zaliczenie projektu :)

Czekam na odpowiedź, i mam nadzieję, że znajdzie się ktoś będący w stanie pomóc :)

potrzebuję pomocy.

Posted: 12 June 2010, 20:12
by =VND=
Zabrakło najważniejszego - w jakim języku?
"algorytm szybkiego potęgowania modulo" - tylko z tym się spotkałem.
Wygląda to tak:
Rozbijasz wykładnik na liczbę dwójkową, i wyliczasz kolejne potęgi modulo dla potęg dwójki. Następnie mnożysz tylko te wyniki które są jedynką (bit=1) dla wykładnika.
Przykład:
4^150 mod 6
150 = 10010110b (czyli ważne są bity - 1,2,4, i 7)

4^150 mod 6 = (4^(2^7) mod 6) * (4^(2^4) mod 6) * (4^(2^2) mod 6) * (4^(2^1) mod 6)

4^(2^7) mod 6 = 4
4^(2^4) mod 6 = 4
4^(2^2) mod 6 = 4
4^(2^1) mod 6 = 4

4^150 mod 6 = (4 * 4 * 4 * 4) mod 6 = 4
kiepski przykład wybrałem, wszędzie 4 wyszło ;)

Najszybszy sposób na wyszukanie liczb pierwszych - Sito Eratostenesa

Pisać całą implementacje obliczeń na dużych liczbach to wyważanie otwartych drzwi, niepotrzebna strata czasu. Jest cała masa gotowych bibliotek specjalnie do tego celu stworzonych GMP, BigNum, LiDIA, no i zdaje się Boost też ma taką bibliotekę. Jeśli jednak nie chcesz ich użyć to pozostają jeszcze stringi i tu już brak ograniczeń co do wielkości liczby, ale cały kod trzeba wklepać od zera.

Śmiesznie prosta implementacja RSA z użyciem biblioteki LiDIA jest TUTAJ
warto zajrzeć też TU

potrzebuję pomocy.

Posted: 12 June 2010, 20:23
by Mały
co do języka, to nieważne jaki, byle obiektowy, chociaż ja preferuję Java, c++ jakoś mi nie podchodzi ;p

z gotowych bibliotek niestety nie mogę korzystać, jednym z założeń tego projektu jest stworzenie wszystkiego od podstaw, co jak dla mnie jest debilizmem, no ale cóż, nie ja prowadzę te zajęcia.

dzięki wielkie za linki, tego akurat nie znalazłem :) cóż, trzeba będzie pogrzebać w tej bibliotece LiDIA i "na podstawie analizy i dogłębnych wniosków, stworzyć swoją wersję" :P jeszcze raz dzięki :)