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(); 


Source: https://habr.com/ru/post/J445560/


All Articles