码迷,mamicode.com
首页 > 其他好文 > 详细

Security学习笔记1

时间:2014-12-23 15:42:47      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:security   公私钥对对象的创建过程   

获取公钥对象思路:
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的实现类,用于构建秘密秘钥规范

Security学习笔记1

标签:security   公私钥对对象的创建过程   

原文地址:http://blog.csdn.net/u014682413/article/details/42102033

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!