Chciałbym zaszyfrować tekst (około 1 MB) i używammaksymalna długość kluczy RSA (4096 bitów). Klucz wydaje się jednak zbyt krótki. Podczas przeglądania Google dowiedziałem się, że maksymalny rozmiar tekstu, który RSA może szyfrować, jest o 8 bajtów krótszy niż długość klucza. W ten sposób mogę zaszyfrować tylko 501 bajtów. Postanowiłem więc podzielić swój tekst na 2093 tablice (1024 * 1024/501 = 2092.1). Pytanie brzmi: jak mogę wlać pierwsze 501 bajtów do pierwszej tablicy w scala? Każdy, kto może mi pomóc?
Odpowiedzi:
1 dla odpowiedzi № 1Nie mogę skomentować, czy masz kryptografiępodejście jest w porządku. (Nie wiem, ale gdybym był w twoich butach, polegałbym na bibliotekach napisanych i sprawdzonych przez bardziej kompetentnych kryptografów. Nie jestem pewien, dlaczego wybrałeś 501, czyli 11 bajtów, a nie 8, mniej niż 512.)
Ale dzielenie tablic na bloki o stałej wielkości powinno być łatwe. Po prostu użyj zgrupowane funkcja f Tablica.
val text : String = ???
val bytes = text.getBytes( scala.io.Codec.UTF8.charSet ) // lots of ways to do this
val blocks = bytes.grouped( 501 )
Bloki będą Iterator[Array[Byte]]
, każdy 501 bajtów, z wyjątkiem ostatniego (który może być krótszy).