Module java.base
Package java.security

Class KeyFactorySpi

java.lang.Object
java.security.KeyFactorySpi

public abstract class KeyFactorySpi extends Object
此类为KeyFactory类定义了服务提供者接口SPI)。该类中的所有抽象方法必须由每个希望为特定算法提供密钥工厂实现的加密服务提供者来实现。

密钥工厂用于将Key类型的不透明加密密钥转换为密钥规范(底层密钥材料的透明表示),反之亦然。

密钥工厂是双向的。也就是说,它们允许您从给定的密钥规范(密钥材料)构建不透明密钥对象,或者以适当格式检索密钥对象的底层密钥材料。

同一密钥可能存在多个兼容的密钥规范。例如,可以使用DSAPublicKeySpecX509EncodedKeySpec来指定DSA公钥。密钥工厂可用于在兼容的密钥规范之间进行转换。

提供者应记录其密钥工厂支持的所有密钥规范。

自版本:
1.2
参见:
  • Constructor Details

    • KeyFactorySpi

      public KeyFactorySpi()
      子类调用的构造函数。
  • Method Details

    • engineGeneratePublic

      protected abstract PublicKey engineGeneratePublic(KeySpec keySpec) throws InvalidKeySpecException
      从提供的密钥规范(密钥材料)生成公钥对象。
      参数:
      keySpec - 公钥的规范(密钥材料)。
      返回:
      公钥。
      抛出:
      InvalidKeySpecException - 如果给定的密钥规范不适合此密钥工厂生成公钥。
    • engineGeneratePrivate

      protected abstract PrivateKey engineGeneratePrivate(KeySpec keySpec) throws InvalidKeySpecException
      从提供的密钥规范(密钥材料)生成私钥对象。
      参数:
      keySpec - 私钥的规范(密钥材料)。
      返回:
      私钥。
      抛出:
      InvalidKeySpecException - 如果给定的密钥规范不适合此密钥工厂生成私钥。
    • engineGetKeySpec

      protected abstract <T extends KeySpec> T engineGetKeySpec(Key key, Class<T> keySpec) throws InvalidKeySpecException
      返回给定密钥对象的规范(密钥材料)。keySpec标识应返回密钥材料的规范类。例如,可以使用DSAPublicKeySpec.class来指示应以DSAPublicKeySpec类的实例返回密钥材料。
      类型参数:
      T - 要返回的密钥规范的类型
      参数:
      key - 密钥。
      keySpec - 应返回密钥材料的规范类。
      返回:
      请求的规范类的底层密钥规范(密钥材料)。
      抛出:
      InvalidKeySpecException - 如果请求的密钥规范不适合给定的密钥,或者无法处理给定的密钥(例如,给定的密钥具有无法识别的格式)。
    • engineTranslateKey

      protected abstract Key engineTranslateKey(Key key) throws InvalidKeyException
      将一个密钥对象(其提供者可能未知或潜在不受信任)转换为该密钥工厂的相应密钥对象。
      参数:
      key - 其提供者未知或不受信任的密钥。
      返回:
      转换后的密钥。
      抛出:
      InvalidKeyException - 如果无法处理给定的密钥。