Javaでの暗号化。 KeyPairクラス

こんにちは、Habr! Javaの暗号化の基礎を学びたい初心者向けの一連の記事から、Jakob Jenkovによる6、7、および8の記事の翻訳を紹介します。







目次:



  1. Java暗号化
  2. Java暗号
  3. メッセージダイジェスト
  4. Mac
  5. 署名
  6. キーペア
  7. キージェネレーター
  8. KeyPairGenerator
  9. キーストア
  10. キーツール
  11. 証明書
  12. CertificateFactory
  13. 証明書パス


キーペア



KeyPairクラス( java.security.KeyPair )は、非対称キーのペア(公開キー+秘密キー)です。 KeyPairインスタンスは、一般的に非対称暗号化(データ暗号化または署名)で使用されます。 通常、KeyPairインスタンスはJavaキーストアまたはKeyPairGeneratorから取得されます。これについては、この記事で後述します。







公開鍵アクセス



getPublic()メソッドを呼び出すことにより、KeyPairのインスタンスの公開鍵にアクセスできます。 公開鍵を取得する例:







PublicKey publicKey = keyPair.getPublic();
      
      





秘密鍵アクセス



getPrivate()メソッドを呼び出すことにより、KeyPairインスタンスの秘密鍵にアクセスすることもできます。 秘密鍵を取得する例を次に示します。







 PrivateKey privateKey = keyPair.getPrivate();
      
      





キージェネレーター



KeyGeneratorクラス( javax.crypto.KeyGenerator )は、対称暗号化キーを生成するために使用されます。 対称暗号化キーは、対称暗号化アルゴリズムを使用してデータを暗号化および復号化するために使用されるキーです。







KeyGeneratorのインスタンスを作成する



KeyGeneratorクラスを使用する前に、KeyGeneratorのインスタンスを作成する必要があります。 KeyGeneratorインスタンスは、静的メソッドgetInstance()を呼び出して、キーが作成される暗号化アルゴリズムの名前を取るパラメーターとして作成されます。 KeyGeneratorのインスタンスを作成する例を次に示します。







 KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
      
      





この例では、AES暗号化アルゴリズムのキーを生成できるKeyGeneratorのインスタンスを作成します。







KeyGeneratorの初期化



KeyGeneratorのインスタンスを作成したら、それを初期化する必要があります。 インスタンスの初期化は、 init()メソッドを呼び出すことで実行されます。 KeyGeneratorインスタンスの初期化の例:







 SecureRandom secureRandom = new SecureRandom(); int keyBitSize = 256; keyGenerator.init(keyBitSize, secureRandom);
      
      





init()メソッドは、キーの長さとキーの生成中に使用されるSecureRandomの 2つのパラメーターを受け入れます。







キー生成



KeyGeneratorインスタンスを初期化した後、それを使用してキーを生成できます。 キー生成は、 generateKey()メソッドを呼び出すことにより実行されます。 対称キーを生成する例を次に示します。







 SecretKey secretKey = keyGenerator.generateKey();
      
      





キーペアジェネレーター



KeyPairGeneratorクラス( java.security.KeyPairGenerator )は、非対称キーペアを生成するために使用されます。 非対称キーのペアは2つのキーで構成されます。通常、最初のキーはデータの暗号化に使用され、2番目のキーは最初のキーで暗号化されたデータの解読に使用されます。







公開鍵と秘密鍵



非対称キーペアの最も有名なタイプは、キーペアタイプのタイプ:公開キー+秘密キーです。 秘密鍵はデータの暗号化に使用され、公開鍵はデータの復号化に使用されます。 実際、公開鍵を使用してデータを暗号化し、秘密鍵を使用してデータを復号化することもできます。 通常、秘密鍵は秘密にされ、公開鍵は誰にでも知られる可能性があります。 したがって、Jackが自分の秘密鍵でデータを暗号化すると、Jackの公開鍵を所有する人は誰でもそれを解読できます。







KeyPairGeneratorのインスタンスを作成する



KeyPairGeneratorを使用するには、最初にKeyPairGeneratorクラスのインスタンスを作成する必要があります。 KeyPairGeneratorのインスタンスは、 getInstance()メソッドを呼び出すことによって作成されます。 インスタンスを作成する例を次に示します。







 KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance("RSA");
      
      





getInstance()メソッドは、使用する暗号化アルゴリズムの名前を受け入れます。 この例では、RSAアルゴリズムを使用します。







初期化KeyPairGenerator



アルゴリズムによっては、KeyPairGeneratorのインスタンスを初期化する必要がある場合があります。 KeyPairGeneratorは、そのinitialize()メソッドを呼び出すことにより初期化されます。 KeyPairGeneratorインスタンスの初期化の例:







 keyPairGenerator.initialize(2048);
      
      





この例では、KeyPairGeneratorを初期化して2048ビットキーを生成します。







キーペアの生成



KeyPairGeneratorを使用してキーペアを生成するには、 generateKeyPair()メソッドが呼び出されます。 キーペア生成の例を次に示します。







 KeyPair keyPair = keyPairGenerator.generateKeyPair();
      
      






All Articles