Mam wyraźny tekst, który chcę zaszyfrować przy użyciu RSA_PKCS_V21 (przy użyciu biblioteki PolarSSL). Problem polega na tym, że przed wykonaniem algorytmu muszę znać rozmiar tekstu szyfru (w celu dynamicznego przydzielania pamięci). Znam rozmiar klucza RSA & długość tekstu.
Chcę również poznać ograniczenie dotyczące długości tekstu wprowadzanego tekstem.
Każdy pomysł?Jak obliczyć rozmiar tekstu szyfrowania RSA, używając rozmiaru klucza i długości tekstu czystego?
Odpowiedz
Wystarczy sprawdzić RSA PKCS#1 v2.1 standard, chapter 7.2:
RSAES-PKCS1-V1_5 zaszyfrować ((n, e), m)
Wejście:
- (n, e) odbiorcy RSA klucz publiczny (k oznacza długość w oktetach modułu n)
- M wiadomość do zaszyfrowania, łańcuch oktetowy o długości mlen, gdzie mLen < = k - 11
Więc wejście zależy od rozmiaru klucza. k
jest tym rozmiarem klucza, ale w oktetach. Tak więc dla klucza 1024-bitowego masz 1024/8 - 11 = 117 bajtów jako maksymalny zwykły tekst.
Należy zauważyć, że powyżej jest maksymalny rozmiar dla RSA z dopełnieniem PKCS # 1 v1.5. W przypadku nowszych OAEP dopełnienia są dostępne w chapter 7.1:
RSAES-OAEP zaszyfrowania ((n, e), K, L)
...
Wejście:
- (n, e) w odbiorcy RSA klucza publicznego (k oznacza długość w oktetach RSA moduł n) komunikatu
- M być szyfrowane, ciąg oktet l ength mLen, gdzie mL < = k - 2hLen - 2
- L opcjonalna etykieta do skojarzenia z wiadomością; wartość domyślna dla L, L, jeżeli nie jest zapewnione, pusta ciąg
przypadku HLEN to wielkość wyjściowa funkcji haszującej do generowania funkcji maski. Jeśli używana jest domyślna funkcja skrótu SHA-1, maksymalny rozmiar wiadomości to k-42 (jako że rozmiar wyjściowy SHA-1 wynosi 20 bajtów, a 2 * 20 + 2 = 42).
Zazwyczaj losowo generowany klucz tajny jest szyfrowany zamiast wiadomości. Następnie wiadomość jest szyfrowana za pomocą tego tajnego klucza. Umożliwia to niemal nieskończenie długie wiadomości, a symetryczne krypto - takie jak AES w trybie CBC - jest znacznie szybsze niż asymetryczne krypto. Ta kombinacja nazywa się hybrid encryption.
Wielkość wyjściowa do szyfrowania RSA lub generowania podpisu z dowolnym wypełnieniem jest identyczna z wielkością modułu w bajtach (zaokrąglane w górę, oczywiście), więc dla kluczem 1024 bitowym można oczekiwać 1024/8 = 128 oktetów/bajtów.
Należy zauważyć, że tablica wyjściowa obliczonego rozmiaru może zawierać bajty wiodące ustawione na zero; to powinno być uważane za normalne.
- 1. szyfrowania i deszyfrowania ciąg tekstu z RSA i DES3 kluczowego
- 2. Jak obliczyć rozmiar fragmentu tekstu w Win2D
- 3. Jak dopasować rozmiar tekstu do rozmiaru Silverlight?
- 4. Jak obliczyć szerokość UILabel na podstawie długości tekstu?
- 5. ProgressDialog: zmiana rozmiaru tekstu
- 6. zmiana rozmiaru czcionki tekstu
- 7. Animacja rozmiaru tekstu TextView
- 8. Jak uzyskać rozmiar klucza RSA w Javie
- 9. Zmiana rozmiaru UILabel w celu dopasowania tekstu
- 10. PIL jak skalować rozmiar tekstu w stosunku do rozmiaru obrazu
- 11. dynamicznie zmieniając rozmiar czcionki na podstawie długości tekstu przy użyciu css i html
- 12. Zmiana rozmiaru tekstu na Uibuttonie
- 13. szyfrowania RSA algorytm
- 14. Skalowanie tekstu Rozmiar w TextView
- 15. Jak ustawić rozmiar tekstu tablayout?
- 16. Jak zmienić rozmiar tekstu Menu
- 17. szyfrowania RSA w Androidzie
- 18. Konwertowanie wartości klucza Raw RSA na obiekt SecKeyRef dla szyfrowania
- 19. Jak obliczyć szerokość ciągu tekstowego określonej czcionki i rozmiaru czcionki?
- 20. Zmień listpreference kolorze Streszczenie tekstu i rozmiaru
- 21. Zwiększanie wbudowanego rozmiaru pustego tekstu listy ListBragment
- 22. Jak zmienić rozmiar tekstu w java
- 23. Zmiana rozmiaru tekstu uibutton nie działa
- 24. Zmiana rozmiaru tekstu etykiety w kodzie
- 25. Zmiana rozmiaru tekstu w pionie w np.
- 26. Jak utworzyć efekt marquee dla tekstu o mniejszej długości nieprzekraczającego rozmiaru ekranu w systemie Android?
- 27. Wynik klucza publicznego RSA RSA niepoprawny
- 28. Rozmiar tekstu z różną rozdzielczością
- 29. szyfrowania klucza prywatnego z BouncyCastle
- 30. Przeglądarka systemu Android automatycznie zmienia rozmiar tekstu
Jest to dość stare pytanie, ale ponieważ właśnie natknęliśmy się na to podczas badania część pytania: Myślę, że ta odpowiedź nie odpowie całą pytanie, które pyta o oczekiwanej wielkości * szyfrogram *, a nie tylko ograniczenia dotyczące rozmiaru wejściowego. tj. biorąc pod uwagę 2048-bitowy klucz RSA, jak duży jest wygenerowany * tekst zaszyfrowany * podany konkretnej wiadomości tekstowej? To pytanie nie było odpowiedzią na twoją odpowiedź (lub tęskniłem za nią). – malexmave
@malexmave Dodano kolejną sekcję do odpowiedzi. Zapomniałem o tym, ponieważ jest to oczywiste. ** Uwaga ** rozmiar klucza 1024 bit jest tylko przykładem, zdecydowanie zaleca się użycie klucza o wielkości 2048 bitów lub wyższej. –