RSA 公開鍵と秘密鍵を使用して文字列オブジェクトを暗号化および復号化する方法を知っている人はいますか?
KeyPairジェネレーターを使用して以下の秘密鍵と公開鍵を作成しましたが、公開鍵を使用してデータを暗号化し、秘密鍵を使用して復号化したいと考えています。
public class Keys {
private static KeyPairGenerator generator;
private static KeyPair keyPair;
private static PrivateKey mPrivateKey;
private static PublicKey mPublicKey;
private static SecureRandom secureRandom;
private static final String SHA1PRNG = "SHA1PRNG";
public static final String RSA = "RSA";
private Keys() throws NoSuchAlgorithmException {
generator = KeyPairGenerator.getInstance("RSA");
}
/**
* Generate private and public key pairs
*
* @throws NoSuchAlgorithmException
*/
private static void generateKeyPair() throws NoSuchAlgorithmException {
// create SecureRandom object used to generate key pairs
secureRandom = SecureRandom.getInstance(SHA1PRNG);
// initialise generator
generator = KeyPairGenerator.getInstance(RSA);
generator.initialize(1024, secureRandom);
// generate keypair using generator
keyPair = generator.generateKeyPair();
// asssign private and public keys
setPrivateKey(keyPair.getPrivate());
setPublicKey(keyPair.getPublic());
}
/**
* Get private key from key generated
* @return
* @throws NoSuchAlgorithmException
*/
public static PrivateKey getPrivateKey() throws NoSuchAlgorithmException {
if (mPrivateKey == null) {
generateKeyPair();
}
return mPrivateKey;
}
private static void setPrivateKey(PrivateKey privateKey) {
mPrivateKey = privateKey;
}
/**
* Get public key from key pair generated
*
* @return
* @throws NoSuchAlgorithmException
*/
public PublicKey getPublicKey() throws NoSuchAlgorithmException {
if (mPublicKey == null) {
generateKeyPair();
}
return mPublicKey;
}
private static void setPublicKey(PublicKey publicKey) {
mPublicKey = publicKey;
}
これは可能ですか、それとも暗号化で同じキーを共有して使用する必要がありますか?
主な目的はこれです。
暗号化されたデータを相互に送受信できる 2 つのクライアントを用意します。
クライアント A が暗号化されたデータを受信するには:
クライアント B がクライアント A の公開鍵を要求します。クライアント B は文字列を暗号化してクライアント A に送信します。クライアント A はこの暗号化された文字列を受信し、独自の秘密鍵を使用して復号化します。
クライアント B が暗号化されたデータを受信したい場合は、その逆です。