java.security KeyPairGenerator
KeyPairGenerator 类用于生成公钥和私钥对。密钥对生成器是使用 getInstance 工厂方法(返回一个给定类的实例的静态方法)构造的。
特定算法的密钥对生成器可以创建能够与此算法一起使用的公钥/私钥对。它还可以将特定于算法的参数与每个生成的密钥关联。
有两种生成密钥对的方式:与算法无关的方式和特定于算法的方式。两种方式的唯一区别在于对象的初始化:
- 与算法无关的初始化
所有的密钥对生成器遵循密钥大小和随机源的概念。对于不同的算法,密钥大小的解释也不相同(例如,对于 DSA 算法,密钥大小对应于模的长度)。此 KeyPairGenerator 类有一个
initialize方法,该方法带有两个通用的共享类型的参数。还有一个只带有keysize参数的方法,它使用以最高优先级安装的提供者的SecureRandom实现作为随机源。(如果任何安装的提供者都不提供SecureRandom的实现,则使用系统提供的随机源。)因为调用上述与算法无关的
initialize方法时没有指定其他参数,所以由提供者决定如何处理与每个密钥关联的特定于算法的参数(如果有)。如果算法为 DSA 算法,密钥大小(模大小)为 512、768 或 1024,那么 Sun 提供者对
p、q和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)
为指定的算法创建 KeyPairGenerator 对象。
|
||||
| Methods | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| public KeyPair | generateKeyPair()
生成一个密钥对。 如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。 每次调用此方法都将生成新的密钥对。 此方法在功能上等同于
|
||||||||||||
| final public KeyPair | genKeyPair()
生成密钥对。 如果此 KeyPairGenerator 没有被显式初始化,特定于提供者的默认值将用于所生成密钥的大小和其他(特定于算法的)值。 每次调用此方法都将生成新的密钥对。 此方法在功能上等同于
|
||||||||||||
| public void | initialize(int keysize)
初始化确定密钥大小的密钥对生成器,使用默认的参数集合,并使用以最高优先级安装的提供者的
|
||||||||||||
| public void | initialize(int keysize, SecureRandom random)
使用给定的随机源(和默认的参数集合)初始化确定密钥大小的密钥对生成器。
|
||||||||||||
| public void | initialize(AlgorithmParameterSpec params) throws InvalidAlgorithmParameterException
初始化密钥对生成器,使用指定参数集合,并使用以最高优先级安装的提供者的 已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的
|
||||||||||||
| public void | initialize(AlgorithmParameterSpec params, SecureRandom random) throws InvalidAlgorithmParameterException
使用给定参数集合和随机源初始化密钥对生成器。 已将此具体方法添加到以前定义的这个抽象类中。此方法调用 KeyPairGeneratorSpi 的
|
||||||||||||
| Properties | ||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| public String | getAlgorithm()
返回此密钥对生成器算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture API Specification & Reference 中的附录 A。
|
|||||||||||||||||||||
| public static KeyPairGenerator | getInstance(String algorithm) throws NoSuchAlgorithmException
返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。 此方法从首选 Provider 开始遍历已注册安全提供者列表。返回封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自第一个支持指定算法的 Provider。 注意,可以通过
|
|||||||||||||||||||||
| public static KeyPairGenerator | getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。 返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定提供者。指定提供者必须在安全提供者列表中注册。 注意,可以通过
|
|||||||||||||||||||||
| public static KeyPairGenerator | getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
返回生成指定算法的 public/private 密钥对的 KeyPairGenerator 对象。 返回一个封装 KeyPairGeneratorSpi 实现的新 KeyPairGenerator 对象,该实现取自指定 Provider 对象。注意,指定 Provider 对象无需在提供者列表中注册。
|
|||||||||||||||||||||
| final public Provider | getProvider()
返回此密钥对生成器对象的提供者。
|
|||||||||||||||||||||
java.security KeyPairGenerator的更多相关文章
- Java Security:Java加密框架(JCA)简要说明
加密服务总是关联到一个特定的算法或类型,它既提供了密码操作(如Digital Signature或MessageDigest),生成或供应所需的加密材料(Key或Parameters)加密操作,也会以 ...
- java security
安全性是Java应用程序的非功能性需求的重要组成部分,如同其它的非功能性需求一样,安全性很容易被开发人员所忽略.当然,对于Java EE的开发人员来说,安全性的话题可能没那么陌生,用户认证和授权可能是 ...
- 基础篇:java.security框架之签名、加密、摘要及证书
前言 和前端进行数据交互时或者和第三方商家对接时,需要对隐私数据进行加密.单向加密,对称加密,非对称加密,其对应的算法也各式各样.java提供了统一的框架来规范(java.security)安全加密这 ...
- java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: IOException : DerInputStream.getLength(): lengthTag=111, too big.
RSA用私钥签名的时候发现报错,删除以下内容即可 -----BEGIN PRIVATE KEY----- -----END PRIVATE KEY----- import org.apache.com ...
- 解決 java.security.cert.CertificateException: Certificates does not conform to algorithm constraints
找到 jre/lib/security/java.security 将 jdk.certpath.disabledAlgorithms=MD2, DSA, RSA keySize < 2048 ...
- Java Security:keytool工具使用说明
Keytool用法说明 Keytool是一个key与cert的管理工具.使用keytool可以管理public key.private key,以及与key之相关的certificate. 1.com ...
- Java Se:Java Security
Java API中有很多都使用了SecurityManager,这到底是什么玩意?最近看公司的产品的源码,也有不少SecurityManager.AccessControlContext等相关的代码, ...
- AES加密时的 java.security.InvalidKeyException: Illegal key size 异常
程序代码 // 设置加密模式为AES的CBC模式 Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); SecretKe ...
- Java Security: Illegal key size or default parameters?
来自:http://stackoverflow.com/questions/6481627/java-security-illegal-key-size-or-default-parameters I ...
随机推荐
- 解决python中的Non-UTF-8 code starting with ‘\xbs4’ in file错误
出现错误如下图: 主要原因为编辑python脚本使用的编辑器编码有问题.我使用的编辑器是notepad++,由于没有做Python语言编辑配置,默认使用的是ANSI编码(右下角位置有编码格式),如下: ...
- gdb调试常用功能
一.gdb中宏定义 macro define list_entry(ptr, type, member) ((type)( (char)ptr - (unsigned long)(&((typ ...
- javascript 代码实例
数组去重 function unique(arr){ if(!Array.isArray(arr)){ console.log('type error!'); return; } arr = arr. ...
- PXC增量恢复添加节点(IST)
绕开SST通过IST方式添加Node到Percona XtraDB Cluster Gcache存储了所有的 writeset ,因此说这个集合的大小直接决定了允许其他节点宕机后多长时间内可以进行 ...
- 深度优先搜索(DFS)思路及算法分析
1.算法用途: 用于遍历图中的节点,有些类似于树的深度优先遍历.这里唯一的问题是,与树不同,图形可能包含循环,因此我们可能会再次来到同一节点. 2.主要思想: 借用一个邻接表和布尔类型数组(判断一个点 ...
- 环境配置--升级Python 3.6爬坑
升级到3.6之后,发现ctrl alt t呼不出命令台,找了半天发现update manager也打不开,而且没有错误报告.....查阅了一番资料看到有人有类似的问题(https://askubunt ...
- iOS - Base64转图片&&图片转Base64
记录一个小功能 app传base64位上去,服务器拿到后转图片保存,当app请求拿回用户图片时,服务器再把图片转base64字符串返回给app,app再转图片 // 64base字符串转图片 - (U ...
- ConcurrentHashMap源码解析(JDK8)
首先看看CHM的重要成员变量: public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ...
- SpringBoot+SpringCloud+vue+Element开发项目——集成Swagger文档
在pom.xml文件中添加Maven依赖 <!--swagger--> <dependency> <groupId>io.springfox</groupId ...
- MongoDB 3.6.1集群部署
Mongodb安装 Linux版本:CentOS release 6.9 Mongodb版本:mongodb-linux-x86_64-3.6.1.tgz 示例是在一台主机上安装mongodb集群 端 ...