您的位置:首页 > 其它

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的实现类,用于构建秘密秘钥规范
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: