• java.security KeyPairGenerator


    KeyPairGenerator 类用于生成公钥和私钥对。密钥对生成器是使用 getInstance 工厂方法(返回一个给定类的实例的静态方法)构造的。

    特定算法的密钥对生成器可以创建能够与此算法一起使用的公钥/私钥对。它还可以将特定于算法的参数与每个生成的密钥关联。

    有两种生成密钥对的方式:与算法无关的方式和特定于算法的方式。两种方式的唯一区别在于对象的初始化:

    • 与算法无关的初始化

      所有的密钥对生成器遵循密钥大小和随机源的概念。对于不同的算法,密钥大小的解释也不相同(例如,对于 DSA 算法,密钥大小对应于模的长度)。此 KeyPairGenerator 类有一个 initialize 方法,该方法带有两个通用的共享类型的参数。还有一个只带有 keysize 参数的方法,它使用以最高优先级安装的提供者的 SecureRandom 实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。)

      因为调用上述与算法无关的 initialize 方法时没有指定其他参数,所以由提供者决定如何处理与每个密钥关联的特定于算法的参数(如果有)。

      如果算法为 DSA 算法,密钥大小(模大小)为 512、768 或 1024,那么 Sun 提供者对 pq 和 g 参数使用一组预计算值。如果模大小不是上述值之一,则 Sun 提供者创建一个新的参数集合。其他提供者可能具有供更多模大小(不仅仅是上文提及的那三个)使用的预计算参数集合。其他提供者也可能没有任何预计算参数列表,而总是创建新的参数集合。

    • 特定于算法的初始化

      对于特定于算法的参数集合已存在的情况(例如,DSA 中所谓的公用参数),有两个 initialize 方法具有 AlgorithmParameterSpec 参数。其中一个方法还有一个 SecureRandom 参数,而另一个方法使用以最高优先级安装的提供者的 SecureRandom 实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。)

    每个提供者都必须提供(并记录)默认的初始化,以防客户端没有显式初始化 KeyPairGenerator(通过调用 initialize 方法)。例如,Sun 提供者使用 1024 位的默认模大小(密钥大小)。

    注意,由于历史原因,此类是抽象类,是从 KeyPairGeneratorSpi 扩展的。应用程序开发人员只需注意在此 KeyPairGenerator 类中定义的方法;超类中的所有方法是供加密服务提供者使用的,这些加密服务提供者希望提供自己的密钥对生成器实现。

    version 1.59, 04/21/06
    See also java.security.spec.AlgorithmParameterSpec
     
    Constructors
    protected KeyPairGenerator(String algorithm)
    zh_cn
    为指定的算法创建 KeyPairGenerator 对象。
    algorithm
    zh_cn
    算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
     
    Methods
    public KeyPair generateKeyPair()
    zh_cn
    生成一个密钥对。

    如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。

    每次调用此方法都将生成新的密钥对。

    此方法在功能上等同于 generateKeyPair

    return
    zh_cn
    生成的密钥对
     
    final public KeyPair genKeyPair()
    zh_cn
    生成密钥对。

    如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。

    每次调用此方法都将生成新的密钥对。

    此方法在功能上等同于 generateKeyPair

    return
    zh_cn
    生成的密钥对
    since 1.2
     
    public void initialize(int keysize)
    zh_cn
    初始化确定密钥大小的密钥对生成器,使用默认的参数集合,并使用以最高优先级安装的提供者的 SecureRandom 实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。)
    keysize
    zh_cn
    密钥大小。它是特定于算法的度量(如模长度),以位数为单位指定。
    Throws InvalidParameterException
    zh_cn
    如果 keysize不受此 KeyPairGenerator 对象支持。
     
    public void initialize(int keysize, SecureRandom random)
    zh_cn
    使用给定的随机源(和默认的参数集合)初始化确定密钥大小的密钥对生成器。
    keysize
    zh_cn
    密钥大小。它是特定于算法的度量(如模长度),以位数为单位指定。
    random
    zh_cn
    随机源。
    Throws InvalidParameterException
    zh_cn
    如果 keysize不受此 KeyPairGenerator 对象支持。
    since 1.2
     
    public void initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
    zh_cn
    初始化密钥对生成器,使用指定参数集合,并使用以最高优先级安装的提供者的 SecureRandom 的实现作为随机源。(如果任何安装的提供者都不提供 SecureRandom 的实现,则使用系统提供的随机源。)

    已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的 initialize 方法,为它传递 params 和随机源(从以最高优先级安装的提供者获得;如果任何已安装的提供者都不能提供,则由系统提供)。如果没有被提供者重写,则该 initialize 方法总是抛出 UnsupportedOperationException。

    params
    zh_cn
    用于生成密钥的参数集合。
    Throws InvalidAlgorithmParameterException
    zh_cn
    如果给定的参数不适合此密钥对生成器。
    since 1.2
     
    public void initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
    zh_cn
    使用给定参数集合和随机源初始化密钥对生成器。

    已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的 initialize 方法,为它传递 params 和 random。如果没有被提供者重写,则该 initialize 方法总是抛出 UnsupportedOperationException。

    params
    zh_cn
    用于生成密钥的参数集合。
    random
    zh_cn
    随机源。
    Throws InvalidAlgorithmParameterException
    zh_cn
    如果给定的参数不适合此密钥对生成器。
    since 1.2
     

    Properties
    public String getAlgorithm()
    zh_cn
    返回此密钥对生成器算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
    return
    zh_cn
    算法的标准字符串名称。
     
    public static KeyPairGenerator getInstance(String algorithm) throws NoSuchAlgorithmException
    zh_cn
    返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。

    此方法从首选 Provider 开始遍历已注册安全提供者列表。返回封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自第一个支持指定算法的 Provider。

    注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

    algorithm
    zh_cn
    算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
    return
    zh_cn
    新的 KeyPairGenerator 对象。
    Throws NoSuchAlgorithmException
    zh_cn
    如果没有 Provider 支持指定算法的 KeyPairGeneratorSpi 实现。
    See also java.security.Provider
     
    public static KeyPairGenerator getInstance(String algorithm, String provider) throws NoSuchAlgorithmExceptionNoSuchProviderException
    zh_cn
    返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。

    返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定提供者。指定提供者必须在安全提供者列表中注册。

    注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

    algorithm
    zh_cn
    算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
    provider
    zh_cn
    提供者的字符串名称。
    return
    zh_cn
    新的 KeyPairGenerator 对象。
    Throws NoSuchAlgorithmException
    zh_cn
    如果指定算法的 KeyPairGeneratorSpi 实现不能从指定提供者获得。
    Throws NoSuchProviderException
    zh_cn
    如果指定提供者未在安全提供者列表中注册。
    Throws IllegalArgumentException
    zh_cn
    如果提供者的名称为 null 或空。
    See also java.security.Provider
     
    public static KeyPairGenerator getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
    zh_cn
    返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。

    返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定 Provider 对象。注意,指定 Provider 对象无需在提供者列表中注册。

    algorithm
    zh_cn
    算法的标准字符串名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
    provider
    zh_cn
    提供者。
    return
    zh_cn
    新的 KeyPairGenerator 对象。
    Throws NoSuchAlgorithmException
    zh_cn
    如果指定算法的 KeyPairGeneratorSpi 实现不能从指定提供者对象获得。
    Throws IllegalArgumentException
    zh_cn
    如果指定提供者为 null。
    since 1.4
    See also java.security.Provider
     
    final public Provider getProvider()
    zh_cn
    返回此密钥对生成器对象的提供者。
    return
    zh_cn
    返回此密钥对生成器对象的提供者
  • 相关阅读:
    【PyMuPDF和pdf2image】Python将PDF转成图片PNG和JPG
    How to extract images from PDF in Python? 通过python从pdf文件中提取图片
    linux shell 用sed命令在文本的行尾或行首添加字符
    shell中的if语句
    Linux find 用法示例
    Linux 自动删除N小时或分钟前的文件
    记一次Linux磁盘空间占满无法删除的故障
    Shell字符串拼接(连接、合并)
    shell脚本使用之awk按列求平均值(含最大,最小值)
    LVM实现将2块磁盘总空间“合二为一”并挂载到同一目录
  • 原文地址:https://www.cnblogs.com/renjiaqi/p/11956157.html
Copyright © 2020-2023  润新知