saaz:
"Spróbuj się z weryfikacjami podpisu na krzywych eliptycznych albo podejdź do napisania RSA nawet na małych liczbach 32/64 bity"
Co do "weryfikacji podpisu na krzywych eliptycznych" to tbh nie mam fioletowego pojecia, co masz na mysli. Jesli to fachowy termin to w zyciu go nie slyszalem. Jesli masz na mysli porownywanie rzeczywistych podpisow napisanych ludzka reka z jakims wzorcem z bazy danych (czyli w sumie sprowadza sie to do TRS), to to zupelnie inna bajka i nie ma co porownywac tego do generowania/sprawdzania kodu, szyfrowania i deszyfrowania czy jakiegos RSA. To o wiele bardziej zlozony problem, wymaga zapewne wielu zaawansowanych technik i na chwile obecna moglbym siedziec nad tym miesiac i i tak nie bylbym w stanie tego zrobic tak, zeby dzialalo porzadnie. Do tego potrzeba zespolu programistow.
A RSA? RSA to zupelnie inna bajka, szczegolnie majac na kartce dokladny algorytm. Pisanie szyfratorow/deszyfratorow lub procedur obliczajacych sumy kontrolne nie jest trudne (podkreslam: majac dokladny opis algorytmow, nad ktorymi dumali latami znacznie madrzejsi ludzie niz ja czy ty ;)), trzeba sie tylko troche nagimnatykowac z operacjami na bitach i tablicami.
RSA tych pierwszych nie wymaga w ogole, a jego implementacja nawet w Pascalu zajmuje pewnie kilkadziesiat linii kodu i zdolny (i wystarczajaco doswiadczony programistycznie) uczen szkoly sredniej moglby sobie z tym poradzic.
Nie mialem pojecia jak to jest naprawde z tym generatorem, wydalo mi sie po prostu ze nie moze byc to bardziej skomplikowane niz - na przyklad - generowanie sum kontrolnych. Tu chodzi o zmyslny algorytm, a nie wymuszenie trudnosci zakodowania tego. Watpie, zeby gmatwanie tego ponad pewien poziom przynioslo jakiekolwiek korzysci. "Sztab programistow" Plusa musial sie napocic przy konstruowaniu systemu jako calosci, a nie jednej cholerniej procedurki wymyslajacej numery kart.
Vymmiatacz:
"Nie wpadliście na pomysła, że te numerki mogą być zupełnie losowe? "
Nie, nie moga byc. Komputer to machina deterministyczna i nie potrafi wymyslic losowo ilus tam liczb. Funckje, z ktorych korzystaja programisci, takie jak wszelkie randy, SRAndy ;), randomize’y i randomy generuja liczby PSEUDOLOSOWE wg pewnego scisle okreslonego algorytmu, na podstawie tak zwanego "zarodka". Jest to jakies dzialanie modulo iles, generujace rownomierny rozklad (czyli jak wylosujesz 10 liczb od 0 do 99 to nie powinno sie zdarzyc, ze otrzymasz np. 9, 5, 3, 1, 8, 4, 11, 5, 2, 1). Korzysta sie rowniez z tzw. akumulatora. To nie jest trudne, o to wlasnie chodzi, zeby to nie bylo zbyt skomplikowane. Komputer w wielu przypadkach musi to bardzo szybko policzyc (tj. musi to robic miliony razy na sekunde), wiec funkcja generujaca liczby pseodolosowe na sto linii kodu nie mialaby sensu, tym bardziej ze nie powiedzialbys, ze dziala lepiej niz jedno-dwulinijkowa (!) funkcja spelniajaca to samo zadanie.
Nie jest to jednak prawdziwa losowosc. Musisz napisac ta "losujaca" funkcje (jesli piszesz w Pascalu i korzystasz z Randoma to i tak przeciez ktos go za ciebie musial wczesniej napisac). Kazdy, kto ja zna, bedzie w stanie przewidziec, jakie liczby sie wylosuje. Czesciowo problem ten rozwiazuje "zarodek". Wstawia sie w niego raz jakas liczbe i to na jej podstawie otrzymuje sie wyniki. Tylko ze jesli wkladalbys tam caly czas np. 666, to nadal wyniki bylyby takie same. Po to piszesz "Randomize;" lub uzywasz sranda - ta funkcja podstawia pod zarodek liczbe oparta na aktualnej dacie i godzinie (najprosciej: ilosc milisekund, jakie uplynely od 1 stycznia 1970 roku), dzieki czemu za kazdym razem, gdy wlaczysz program, otrzymujesz inny zarodek (bo czas jest inny) i rowniez inne liczby. Tak wiec zebym przewidzial liczby, ktore wylosujesz, musialbym znac nie tylko algorytm dzialania twojego randoma i randomize’a, ale tez dokladny czas (z dokladnoscia do milisekund) z ktorym uruchomisz program ;). Ale - gdybym to znal, to bym ci te liczby podal, wiec nie mozna powiedziec, ze sa one faktycznie losowe.
rAko - wybacz, ale pisanie "generatora" w ten sposob nie nazwalbym "pisaniem generatora"... rownie dobrze moge poprosic moja babcie zeby mi na kartce podala numer, ktory mam wystukac na komorce ;p (btw: i to by bylo wlasnie losowe, przynajmniej jesli bedziemy wierzyc, ze dzialanie mozgu opiera sie na zasadach mechaniki kwantowej, a wiec jest niedeterministyczne...)