java.security.Key.getEncoded()はDERエンコード形式でデータを返しますか?
そうでない場合、それを行う方法はありますか?
更新:RSA秘密鍵の実装を保持する鍵インターフェース
キーの種類によって異なります。ほとんどの対称鍵は、エンコードなしで生のバイトを返します。ほとんどの公開鍵は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
}