30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 1 2 3 4
styczeń [luty] marzec
kwiecień maj czerwiec
lipiec sierpień
wrzesień październik
listopad grudzień
Ciekawy błąd w Ruby
Wpis z dnia: 2011-11-28, z godziny: 13:27
Ciekawy błąd w interpreterze języka Ruby - na szczęście nie wszedł do produkcyjnej wersji. W kodzie implementującym algorytm RSA była sobie taka pętla:

for (i = 0; i < (int)sizeof(exp); ++i)

Intencją programisty było przejście przez wszystkie bity zmiennej exp (typu int) i przekopiowanie ich do struktur BN ( big number). Ale sizeof() daje wynik w bajtach, więc w takiej postaci pętla faktycznie ustawiała tylko pierwsze cztery bity exp a powinna ustawić ich 32 (na platformach 32-bitowych). Parametr exp w algorytmie RSA może przyjmować trzy wartości (3, 17, 65537). Po przepuszczeniu przez tę pętlę był on zawsze sprowadzany albo do 1000 binarnie czyli 8 dziesiętnie albo do 1100 (12).

W poprawionej wersji pętla wygląda tak:

for (i = 0; i < (int)sizeof(exp) * 8; ++i)


Komentarze:
Redakcja Computerworld nie ponosi odpowiedzialności za wypowiedzi Internautów opublikowane na stronach serwisu oraz zastrzega sobie prawo do redagowania, skracania bądź usuwania komentarzy zawierających treści zabronione przez prawo, uznawane za obraźliwie lub naruszające zasady współżycia społecznego. Osoby zamieszczające wypowiedzi naruszające prawo lub prawem chronione dobra osób trzecich mogą ponieść z tego tytułu odpowiedzialność karną lub cywilną.
WjLDyDzsJBIP: 156.54.109.9705-12-2011, 16:39
So that's the case? Quite a rveeatlion that is.
Liczba zatwierdzonych komentarzy: 1      dodaj swój komentarz  

Korzystanie z serwisu Bywalec Computerworld jest jednoznaczne z wyrażeniem zgody na następujące warunki obsługi. Regulamin korzystania z serwisu. Serwis realizuje wytyczne ASME oraz uzupełnienia IDG dotyczące zasad publikacji w mediach elektronicznych.
© copyright 2012 IDG Poland SA
04-204 Warszawa ul. Jordanowska 12
tel. (+48 22) 321 78 00  fax (+48 22) 321 78 88