В зависимости от типа ключа. Большинство симметричных ключей возвращают необработанные байты без кодировки. Большинство открытых ключей использует кодировку ASN.1 / DER.
Вам не нужно заботиться о том, как кодируется ключ. Рассматривайте getEncoded как функцию сериализации. Возвращает представление ключа в байтовом потоке, которое позже можно сохранить и преобразовать обратно в ключ.
Для закрытых ключей RSA он может быть закодирован как PKCS # 1 или PKCS # 8. PKCS # 1 является предпочтительной кодировкой, поскольку она содержит дополнительные параметры CRT, которые ускоряют операции с закрытым ключом.
Sun JCE всегда генерирует пары ключей в кодировке PKCS # 1, поэтому закрытый ключ всегда кодируется в этом формате, определенном в PKCS # 1,
--
-- Representation of RSA private key with information for the CRT algorithm.
--
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
}
Version ::= INTEGER { two-prime(0), multi(1) }
(CONSTRAINED BY {-- version must be multi if otherPrimeInfos present --})
OtherPrimeInfos ::= SEQUENCE SIZE(1..MAX) OF OtherPrimeInfo
OtherPrimeInfo ::= SEQUENCE {
prime INTEGER, -- ri
exponent INTEGER, -- di
coefficient INTEGER -- ti
}