web-dev-qa-db-ja.com

バイト配列をPrivateKeyまたはPublicKeyタイプに変換する方法は?

RSAアルゴリズムを使用して公開キーと秘密キーを生成しています

final KeyPairGenerator keyGen = KeyPairGenerator.getInstance(ALGORITHM);
keyGen.initialize(1024);
final KeyPair key = keyGen.generateKeyPair();
final PrivateKey privateKey=key.getPrivate();
final PublicKey publickey=key.getPublic();

その後、これらのキーはBase64エンコーダーを使用してエンコードされ、データベースに保存されます。

このエンコードされた文字列をJavaで秘密鍵と公開鍵の種類に変換する方法。Base64Decoderを使用してこの文字列をデコードすると、バイト配列が取得されます。このバイト配列をパブリックまたはプライベートに変換する方法キータイプ?

24
sufala

キーのgetEncoded()の出力を表すbyte []がある場合、KeyFactoryを使用してPublicKeyオブジェクトまたはPrivateKeyオブジェクトに戻すことができます。

byte[] privateKeyBytes;
byte[] publicKeyBytes;
KeyFactory kf = KeyFactory.getInstance("RSA"); // or "EC" or whatever
PrivateKey privateKey = kf.generatePrivate(new PKCS8EncodedKeySpec(privateKeyBytes));
PublicKey publicKey = kf.generatePublic(new X509EncodedKeySpec(publicKeyBytes));
45
nsayer