モジュール java.base
パッケージ javax.crypto

クラスSecretKeyFactory


  • public class SecretKeyFactory
    extends Object
    このクラスは、秘密鍵のファクトリを表します。

    鍵ファクトリは、Key型の不透明な暗号鍵であると、基本の鍵データの透明な表現である鍵仕様との間の変換を行うために使用します。 秘密鍵ファクトリの操作は、秘密(対称)鍵だけに行います。

    鍵ファクトリは双方向性です。つまり、指定した鍵仕様(鍵データ)から不透明な鍵オブジェクトを構築することも、適切な形式で鍵オブジェクトの基本の鍵データを取り出すこともできます。

    アプリケーション開発者は、プロバイダのドキュメントを参照して、generateSecretおよびgetKeySpecメソッドでサポートされている鍵仕様を確認する必要があります。 たとえば、SunJCEプロバイダが提供するDES秘密鍵ファクトリはDESKeySpecをDES鍵の透明な表現としてサポートし、そのプロバイダのTriple DES鍵の秘密鍵ファクトリはDESedeKeySpecをTriple DES鍵の透明な表現としてサポートします。

    Javaプラットフォームの実装は、すべて次の標準のSecretKeyFactoryアルゴリズムをサポートする必要があります。

    • DES
    • DESede
    これらのアルゴリズムは、Javaセキュリティ標準アルゴリズム名仕様の「SecretKeyFactoryセクション」に記述されています。 サポートされているその他のアルゴリズムについては、実装のリリース・ドキュメントを参照してください。

    導入されたバージョン:
    1.4
    関連項目:
    SecretKey, DESKeySpec, DESedeKeySpec, PBEKeySpec
    • コンストラクタの詳細

      • SecretKeyFactory

        protected SecretKeyFactory​(SecretKeyFactorySpi keyFacSpi,
                                   Provider provider,
                                   String algorithm)
        SecretKeyFactoryオブジェクトを生成します。
        パラメータ:
        keyFacSpi - 委譲先
        provider - プロバイダ
        algorithm - 秘密鍵アルゴリズム
    • メソッドの詳細

      • getInstance

        public static final SecretKeyFactory getInstance​(String algorithm)
                                                  throws NoSuchAlgorithmException
        指定されたアルゴリズムの秘密鍵を変換するSecretKeyFactoryオブジェクトを返します。

        このメソッドは、最優先のProviderから順に、登録済みのセキュリティProviderのリストをトラバースします。 指定されたアルゴリズムをサポートする最初のプロバイダのSecretKeyFactorySpi実装をカプセル化する新しいSecretKeyFactoryオブジェクトが返されます。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        実装上の注意:
        JDKリファレンス実装では、jdk.security.provider.preferred Securityプロパティを使用して、指定されたアルゴリズムの優先プロバイダの順序を決定します。 これは、Security.getProviders()によって返されるプロバイダの順序とは異なる場合があります。
        パラメータ:
        algorithm - 要求された秘密鍵アルゴリズムの標準名。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のSecretKeyFactoryセクションを参照してください。
        戻り値:
        新しいSecretKeyFactoryオブジェクト
        例外:
        NoSuchAlgorithmException - Providerが、指定されたアルゴリズムのSecretKeyFactorySpi実装をサポートしていない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getInstance

        public static final SecretKeyFactory getInstance​(String algorithm,
                                                         String provider)
                                                  throws NoSuchAlgorithmException,
                                                         NoSuchProviderException
        指定されたアルゴリズムの秘密鍵を変換するSecretKeyFactoryオブジェクトを返します。

        指定されたプロバイダからのSecretKeyFactorySpi実装をカプセル化する新しいSecretKeyFactoryオブジェクトが返されます。 指定したプロバイダは、セキュリティ・プロバイダ・リストに登録する必要があります。

        登録済みプロバイダのリストは、Security.getProviders()メソッド経由で取得できます。

        パラメータ:
        algorithm - 要求された秘密鍵アルゴリズムの標準名。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のSecretKeyFactoryセクションを参照してください。
        provider - プロバイダ名。
        戻り値:
        新しいSecretKeyFactoryオブジェクト
        例外:
        IllegalArgumentException - providernullまたは空の場合
        NoSuchAlgorithmException - 指定されたアルゴリズムのSecretKeyFactorySpi実装が、指定されたプロバイダから利用可能でない場合
        NoSuchProviderException - 指定されたプロバイダがセキュリティ・プロバイダ・リストに登録されていない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getInstance

        public static final SecretKeyFactory getInstance​(String algorithm,
                                                         Provider provider)
                                                  throws NoSuchAlgorithmException
        指定されたアルゴリズムの秘密鍵を変換するSecretKeyFactoryオブジェクトを返します。

        指定されたProviderオブジェクトからのSecretKeyFactorySpi実装をカプセル化する新しいSecretKeyFactoryオブジェクトが返されます。 指定されたProviderオブジェクトは、プロバイダ・リストに登録する必要はありません。

        パラメータ:
        algorithm - 要求された秘密鍵アルゴリズムの標準名。 標準アルゴリズム名については、「Javaセキュリティ標準アルゴリズム名指定」のSecretKeyFactoryセクションを参照してください。
        provider - プロバイダ
        戻り値:
        新しいSecretKeyFactoryオブジェクト
        例外:
        IllegalArgumentException - providernullの場合
        NoSuchAlgorithmException - 指定されたアルゴリズムのSecretKeyFactorySpi実装が、指定されたProviderオブジェクトから使用できない場合
        NullPointerException - algorithmnullである場合
        関連項目:
        Provider
      • getProvider

        public final Provider getProvider()
        このSecretKeyFactoryオブジェクトのプロバイダを返します。
        戻り値:
        このSecretKeyFactoryオブジェクトのプロバイダ
      • getAlgorithm

        public final String getAlgorithm()
        このSecretKeyFactoryオブジェクトのアルゴリズム名を返します。

        これは、このSecretKeyFactoryオブジェクトを作成したgetInstance呼出しのいずれかに指定された名前と同じです。

        戻り値:
        このSecretKeyFactoryオブジェクトのアルゴリズム名。
      • generateSecret

        public final SecretKey generateSecret​(KeySpec keySpec)
                                       throws InvalidKeySpecException
        指定された鍵仕様(鍵データ)からSecretKeyオブジェクトを生成します。
        パラメータ:
        keySpec - 秘密鍵の仕様(鍵データ)
        戻り値:
        秘密鍵
        例外:
        InvalidKeySpecException - 指定された鍵仕様がこの秘密鍵ファクトリによる秘密鍵の生成に不適切な場合。
      • getKeySpec

        public final KeySpec getKeySpec​(SecretKey key,
                                        Class<?> keySpec)
                                 throws InvalidKeySpecException
        指定された鍵オブジェクトの仕様(鍵データ)を要求された形式で返します。
        パラメータ:
        key - キー
        keySpec - 鍵データが返される、要求された形式
        戻り値:
        要求された形式での基本となる鍵仕様(鍵データ)
        例外:
        InvalidKeySpecException - 要求された鍵仕様が指定された鍵に不適切(keykeySpecに関連するアルゴリズムが一致しない、あるいはkeyは暗号化ハードウェア・デバイスの鍵を参照するが、keySpecはソフトウェア・ベースの鍵の仕様であるなど)な場合、あるいは指定された鍵を扱えない場合(たとえば、指定された鍵のアルゴリズムまたは形式がこの秘密鍵ファクトリでサポートされていない)。
      • translateKey

        public final SecretKey translateKey​(SecretKey key)
                                     throws InvalidKeyException
        プロバイダが未知であるか、信頼できない可能性がある鍵オブジェクトを、この秘密鍵ファクトリの対応する鍵オブジェクトに変換します。
        パラメータ:
        key - プロバイダが未知であるか、信頼できない鍵
        戻り値:
        変換した鍵
        例外:
        InvalidKeyException - 指定された鍵をこの秘密鍵ファクトリで処理できない場合。