Już opracowałem aplet karty Java.używa RSA do szyfrowania. Więc chcę wiedzieć, czy istnieje sposób na przyspieszenie szyfrowania / odszyfrowywania RSA w karcie Java. Powodem jest to, że kiedy użyłem RSA 2048 zajmuje to trochę więcej czasu niż RSA 512 lub 1024.
Dzięki SSV
Odpowiedzi:
5 dla odpowiedzi № 1RSA jest z natury powolne i zmniejsza się, gdy używasz większych długości kluczy. Są jednak rzeczy, które możesz zrobić, aby przyspieszyć operacje RSA:
- Użyj klucza publicznego z publicznym wykładnikiem, dla którego ustawiono kilka bitów
1
, np. czwarta liczba Fermata, 65537. Zauważ, że są pewne ataki, które można wykonać na publicznym wykładniku o wartości 3. To tylko przyspiesza operacje na kluczach publicznych. - użyć
RSAPrivateCrtKey
która obejmuje parametry, które mogą być użyte do obliczeń przy użyciu chińskiego twierdzenia o pozostałym. Przyspiesza to tylko operacje na klucz prywatny.
Jeśli już wygenerowałeś parę kluczy wkarty, jest szansa, że obie opcje zostały już zniesione przez chip. W takim przypadku przestrzeń rozwiązania może być pusta. Jedyne, co możesz wtedy zrobić, to przełączyć się na kryptografię eliptyczną Curve (ale nawet to może być wolniejsze dla operacji z kluczem publicznym) lub inny protokół z wykorzystaniem algorytmów symetrycznych.