有誰知道如何使用RSA公鑰和私鑰加密和解密字符串對象?java使用密鑰對進行加密和解密?
我已經使用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;
}
這是可能的還是加密必須共享和使用相同的密鑰?
主要目的是這樣的。
我將有兩個客戶端可以發送和接收加密數據給彼此。
客戶端A收到的加密數據:
爲客戶A的公鑰客戶端B的請求。 客戶端B加密字符串並將其發送到客戶端A. 客戶端A接收到此加密的字符串,然後使用其自己的私鑰對其進行解密。
反之亦然,如果客戶B希望收到加密數據。
密鑰生成代碼有什麼問題嗎?如果不是,那麼它可能會從問題中刪除。 –