Java密碼學KeyPairGenerator類


Java提供了KeyPairGenerator類。 此類用於生成公鑰和私鑰對。 要使用KeyPairGenerator類生成金鑰,請按照以下步驟操作。

第1步:建立KeyPairGenerator物件

KeyPairGenerator類提供getInstance()方法,該方法接受表示所需金鑰生成演算法的String變數,並返回生成金鑰的KeyPairGenerator物件。

使用getInstance()方法建立KeyPairGenerator物件,如下所示。

//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");

第2步:初始化KeyPairGenerator物件

KeyPairGenerator類提供了一個名為initialize()的方法,該方法用於初始化金鑰對生成器。 此方法接受表示金鑰大小的整數值。

使用此方法初始化在上一步中建立的KeyPairGenerator物件,如下所示。

//Creating KeyPair generator object
KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");
//Initializing the KeyPairGenerator
keyPairGen.initialize(2048);

第3步:生成KeyPairGenerator

可以使用KeyPairGenerator類的generateKeyPair()方法生成KeyPair。 使用此方法生成金鑰對,如下所示。

//Generate the pair of keys
KeyPair pair = keyPairGen.generateKeyPair();

第4步:獲取私鑰/公鑰

可以使用getPrivate()方法從生成的金鑰對物件中獲取私鑰,如下所示。

//Getting the private key from the key pair
PrivateKey privKey = pair.getPrivate();

可以使用getPublic()方法從生成的KeyPair物件獲取公鑰,如下所示。

//Getting the public key from the key pair
PublicKey publicKey = pair.getPublic();

範例
下面的範例演示了使用javax.crypto包的KeyPairGenerator類生成金鑰的金鑰。

import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.PrivateKey;
import java.security.PublicKey;

public class KeyPairGenertor {
   public static void main(String args[]) throws Exception{
      //Creating KeyPair generator object
      KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("DSA");

      //Initializing the KeyPairGenerator
      keyPairGen.initialize(2048);

      //Generating the pair of keys
      KeyPair pair = keyPairGen.generateKeyPair();

      //Getting the private key from the key pair
      PrivateKey privKey = pair.getPrivate();   

      //Getting the public key from the key pair
      PublicKey publicKey = pair.getPublic(); 
      System.out.println("Keys generated");
   }
}

執行上面範例程式碼,得到下結果:

Keys generated