Key
接口介绍: Key接口是所有密钥接口的顶层接口,一切与加密有关的操作都离不开Key接口,其中SecrectKey、PublicKey()和PrivateKey()均继承自Key接口,定义了对称密钥和非对称密钥接口。
Key方法详述
//算法
getAlgorithm()
//编码形式
getEncoded()
//格式
getFormat()
SecrectKey
接口详述: 该接口是对称密钥顶层接口,DES和AES直接通过该接口提供,PBE接口提供PEB算法定义并继承了该接口,Mac算法的实现也是通过该接口实现类SecrectKeySpec
PublicKey和PrivateKey
接口详述: 这对接口是非对称密钥顶层接口,DH、RSA、DSA和EC接口均继承了这两个接口.
KeyPair
类详述: 是对非对称密钥的拓展,它是密钥对的载体,密钥对。
方法详述:
//构造函数,值得注意的是KeyPair只能通过构造函数初始化公钥和私钥
KeyPair(PublicKey publicKey,PrivateKey privateKey)
//返回一个公钥引用
getPublic();
//返回一个私钥对象
getPrivate();
KeyGenerator
功能: 用来生成对称加密算法的秘密密钥,并提供相关信息
生成方式: 与密码无关的方式和特定于算法的方式
方法详述
//实例化对象
//1.制定算法类型
KeyGenerator keyGenerator1 = KeyGenerator.getInstance("HmacMD5");
//2.指定算法类型的同时指定提供者
KeyGenerator keyGenerator2 = KeyGenerator.getInstance("HmacMD5","SunJCE");
Provider provider = Security.getProvider("SunJCE");
KeyGenerator keyGenerator3 = KeyGenerator.getInstance("HmacMD5",provider);
//与算法无关的初始化方法
init(SecureRandom random)
init(int keySize)
init(int keySize,SecureRandom random)
//与算法相关的初始化方法
init(AlgorithmParameterSpec params);
init(AlgorithmParameterSpec params,SecureRandom random);
//生成一个SecretKey对象
generalKey();
//获取算法名称
getAlgorithm();
//获取提供者
getProvider();
//简单的实现实例
KeyGenerator keyGenerator = KeyGenerator.getInstance("HmacMD5");
SecrectKey key = keyGenerator.generalKey();
Syetem.out.println(new BigInteger(key.getEncode()));
//打印结果 -3685906392408423093039171339150305988965616524030789173027746427172079039241578249210327619576278316826353721432347866064387477680015812613891791552395429
KeyPairGenerator
功能: 生成用于非对称加密算法含有的公钥和私钥的密钥对
方法详述:
//获取实例化对象
getInstance(String algorithm);
getInstance(String algorithm,Provider provider);
getInstance(String algorithm,String provider);
//初始化
//算法无关的初始化
initialize(int keySize); //注意密钥长度范围为512~1024,按64的整数倍递增至1024
initialize(int keySize,SecureRandom random);
//特定于算法的初始化
initialize(AlgorithmParameter params);
initialize(AlgorithmParameter params,SecureRandom random);
// 生成一个KeyPair对象
generateKeyPair();
//生成KeyPair对象,内部实现时调用了generateKeyPair(),通常使用这个方法后去密钥对
genKeyPair();
//获取算法名称
getAlgorithm();
//获取提供者
getProvider();
//代码演示
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
kpg.initialize(1024);
KeyPair keys = kpg.genKeyPair();