モジュラスと公開指数からRSAPublicKey
実装を作成する例を示します。
KeyFactory factory rsa = KeyFactory.getInstance("RSA");
BigInteger n = ... ; /* modulus */
BigInteger e = ... ; /* public exponent */
RSAPublicKeySpec spec = new RSAPublicKeySpec(n, e);
RSAPublicKey pub = (RSAPublicKey) factory.generatePublic(spec);
Cipher enc = Cipher.getInstance("RSA");
enc.init(Cipher.WRAP_MODE, pub);
byte[] encryptedContentKey = enc.wrap(secret);
RSA鍵ペアは、BigInteger
オブジェクトの形でいくつかの数字を含むそれぞれがプライベート鍵と公開鍵です。ペアの各キーは同じ「モジュラス」を共有します。公開鍵は「公開指数」を有し、秘密鍵は「秘密指数」を有する。計算効率のために、秘密鍵は通常、「中国剰余定理形式」で格納され、追加の数が含まれています。
暗号化する場合は、PublicKey
をのinit()
メソッドに渡す必要があります。
解読する場合はCipher
のinit()
メソッドにPrivateKey
を渡す必要があります。
は(
Signature
クラスがより明確に自分の意図を表現する際に一部のプロバイダでは、キーを逆にするときに、署名操作を実行し、正しいパディングを使用するように
Cipher
を使用することができますが、これは必要に応じてお勧めするかしない。)
はい、可能です。 –
申し訳ありません - 質問に詳細を追加しました。 – Joseph
確かに、 'Key'は' BigInteger'ではないので、キャストできません。 Javaでのキャストは変換演算子ではありません(プリミティブ型を除く)。インスタンス化したいと思う 'Key 'を実装する具体的な具体的なクラスを知る必要があります。これはおそらく研究の始まりに過ぎません。 –