Ключи RSA сделаны из модуля и экспоненты. Размер ключа относится к битам в модуле. Таким образом, даже без каких-либо накладных расходов на кодирование вам потребуется более 128 байтов для хранения 1024-битных ключей.
getEncoded () возвращает закодированные объекты ASN.1 DER. Закрытый ключ даже содержит параметры CRT, поэтому он очень большой.
Чтобы получить размер ключа, сделайте что-то вроде этого,
System.out.println("Key size = " + publicKey.getModulus().bitLength());
Вот соответствующие объекты ASN.1,
RSAPrivateKey ::= SEQUENCE {
version Version,
modulus INTEGER, -- n
publicExponent INTEGER, -- e
privateExponent INTEGER, -- d
prime1 INTEGER, -- p
prime2 INTEGER, -- q
exponent1 INTEGER, -- d mod (p-1)
exponent2 INTEGER, -- d mod (q-1)
coefficient INTEGER, -- (inverse of q) mod p
otherPrimeInfos OtherPrimeInfos OPTIONAL
}
RSAPublicKey ::= SEQUENCE {
modulus INTEGER, -- n
publicExponent INTEGER -- e
}