Security学习笔记1
2014-12-23 14:04
190 查看
获取公钥对象思路:
1、首先得到公私钥对
//以指定的算法实例化KeyPairGenerator对象
KeyPairGenerator keygen = KeyPairGenerator.getInstance("DSA");
//初始化KeyPairGenerator
keygen.initialize(1024);
//生成KeyPair对象
KeyPair keys = keygen.genKeyPair();
2、得到公钥字节数组
byte[] publicKeyBytes = keys.getPublic().getEncoded();
//实例化X509EncodedKeySpec对象
3、利用公钥字节数组构造公钥对象。
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
//以指定的算法实例化KeyFactory对象
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
//获得PublicKey对象
//public final PublicKey generatePublic(KeySpec keySpec)根据提供的密钥规范(密钥材料)生成公钥对象。
PublicKey publicKey = keyFactory.generatePublic(keySpec);
私钥创建过程与公钥类似
AlgorithmParameterGenerator对象创建过程
1、调用AlgorithmParameterGenerator.getInstance()方法:
1)在方法getInstance()内部调用Security.getImpl(algorithm, "AlgorithmParameterGenerator", (String)null);方法返回一个对象数组
2)在调用带参数的构造函数创建新的AlgorithmParameterGenerator对象返回
new AlgorithmParameterGenerator((AlgorithmParameterGeneratorSpi)objs[0], (Provider)objs[1], algorithm);
2、Initializes this parameter generator for a certain size.
public final void init(int size)
getInstance源码:
public static AlgorithmParameterGenerator getInstance(String algorithm,
String provider)
throws NoSuchAlgorithmException, NoSuchProviderException
{
if (provider == null || provider.length() == 0)
throw new IllegalArgumentException("missing provider");
Object[] objs = Security.getImpl(algorithm,
"AlgorithmParameterGenerator",
provider);
return new AlgorithmParameterGenerator
((AlgorithmParameterGeneratorSpi)objs[0], (Provider)objs[1],
algorithm);
}
AlgorithmParameters、AlgorithmParameterGenerator等类的getInstance()方法内部实现结构基本相同。
X509EncodedKeySpec用于构建公钥规范,PKCS8EncodedKeySpec用于构建私钥规范
SecretKeySpec接口是KeySpec的实现类,用于构建秘密秘钥规范
1、首先得到公私钥对
//以指定的算法实例化KeyPairGenerator对象
KeyPairGenerator keygen = KeyPairGenerator.getInstance("DSA");
//初始化KeyPairGenerator
keygen.initialize(1024);
//生成KeyPair对象
KeyPair keys = keygen.genKeyPair();
2、得到公钥字节数组
byte[] publicKeyBytes = keys.getPublic().getEncoded();
//实例化X509EncodedKeySpec对象
3、利用公钥字节数组构造公钥对象。
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
//以指定的算法实例化KeyFactory对象
KeyFactory keyFactory = KeyFactory.getInstance("DSA");
//获得PublicKey对象
//public final PublicKey generatePublic(KeySpec keySpec)根据提供的密钥规范(密钥材料)生成公钥对象。
PublicKey publicKey = keyFactory.generatePublic(keySpec);
私钥创建过程与公钥类似
AlgorithmParameterGenerator对象创建过程
1、调用AlgorithmParameterGenerator.getInstance()方法:
1)在方法getInstance()内部调用Security.getImpl(algorithm, "AlgorithmParameterGenerator", (String)null);方法返回一个对象数组
2)在调用带参数的构造函数创建新的AlgorithmParameterGenerator对象返回
new AlgorithmParameterGenerator((AlgorithmParameterGeneratorSpi)objs[0], (Provider)objs[1], algorithm);
2、Initializes this parameter generator for a certain size.
public final void init(int size)
getInstance源码:
public static AlgorithmParameterGenerator getInstance(String algorithm,
String provider)
throws NoSuchAlgorithmException, NoSuchProviderException
{
if (provider == null || provider.length() == 0)
throw new IllegalArgumentException("missing provider");
Object[] objs = Security.getImpl(algorithm,
"AlgorithmParameterGenerator",
provider);
return new AlgorithmParameterGenerator
((AlgorithmParameterGeneratorSpi)objs[0], (Provider)objs[1],
algorithm);
}
AlgorithmParameters、AlgorithmParameterGenerator等类的getInstance()方法内部实现结构基本相同。
X509EncodedKeySpec用于构建公钥规范,PKCS8EncodedKeySpec用于构建私钥规范
SecretKeySpec接口是KeySpec的实现类,用于构建秘密秘钥规范
相关文章推荐
- spring-security学习笔记--配置文件
- EntLib 3.1学习笔记(6) : Security Application Block
- ASP.net(1.1)原理学习笔记--第十一章 安全性Security
- 学习笔记七: security
- spring-security学习笔记--配置文件
- spring-security学习笔记--配置文件
- spring-security学习笔记--配置文件
- 【NDN安全】Coordination Supports Security: A New Defence Mechanism Against Interest Flooding in NDN 学习笔记
- selenium(webdriver)学习笔记5--处理windows security dialog,安全验证
- EntLib 3.1学习笔记(6) : Security Application Block
- Find security bugs学习笔记V1.0
- acegi-security-0.9.0 学习笔记
- Windows Security 学习笔记
- App Transport Security(ATS)学习笔记
- Find security bugs学习笔记V1.0
- spring-security学习笔记--配置文件
- Acegi-security-samples-tutorial-1.0.7.zip 实例学习笔记
- acegi-security 学习笔记
- WebLogic学习笔记【Proxy, JTA, Security, JMX, JMS】
- Spring Boot Security 学习笔记-根据登陆人动态配置权限-密码加密验证