java secretkey_Java中的SecretKeyFactory类 | 学步园

SecretKeyFactory表示秘密密钥的工厂。类声明:public class SecretKeyFactoryextends Object

密钥工厂用来将密钥(类型 Key 的不透明加密密钥)转换为密钥规范(底层密钥材料的透明表示形式),反之亦然。秘密密钥工厂只对秘密(对称)密钥进行操作。

密钥工厂为双工模式,即其允许根据给定密钥规范(密钥材料)构建不透明密钥对象,或以适当格式获取密钥对象的底层密钥材料。

应用程序开发人员应参阅其提供者文档,找出 generateSecret和

getKeySpec方法所支持的密钥规范。例如,"SunJCE" 提供者提供的 DES 秘密密钥工厂支持 DESKeySpec 作为 DES 密钥的透明表示形式,并且该提供者的 Triple DES 密钥的秘密密钥工厂支持

DESedeKeySpec 作为 Triple DES 密钥的透明表示形式。

1、构造方法:protected SecretKeyFactory(SecretKeyFactorySpi keyFacSpi, Provider provider, String algorithm)  用来创建一个 SecretKeyFactory 对象。

参数:

keyFacSpi - 委托

provider - 提供者

algorithm - 秘密密钥

2、方法详细:

①public static final SecretKeyFactory getInstance(String algorithm) throws NoSuchAlgorithmException

返回转换指定算法的秘密密钥的 SecretKeyFactory 对象

此方法从首选 Provider 开始遍历已注册安全提供者列表。返回一个封装 SecretKeyFactorySpi 实现的新 SecretKeyFactory 对象,该实现取自支持指定算法的第一个 Provider。

注意,可以通过 Security.getProviders() 方法获取已注册提供者列表。

参数:

algorithm - 所请求的秘密密钥算法的标准名称。有关标准算法名称的信息,请参阅 Java Cryptography Architecture Reference Guide中的附录 A

抛出:NoSuchAlgorithmException - 如果没有任何 Provider 支持指定算法的 SecretKeyFactorySpi 实现。

②public static final SecretKeyFactory getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException

返回转换指定算法的秘密密钥的 SecretKeyFactory 对象。

返回一个封装 SecretKeyFactorySpi 实现的新 SecretKeyFactory 对象,该实现取自指定的提供者。指定提供者必须在安全提供者列表中注册。

抛出异常:

NoSuchAlgorithmException - 如果不能从指定提供者获得指定算法的 SecretKeyFactorySpi 实现。

NullPointerException - 如果指定的算法为 null。

NoSuchProviderException - 如果指定提供者未在安全提供者列表中注册。

IllegalArgumentException - 如果 provider 为 null 或空。

③public static final SecretKeyFactory getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException

返回转换指定算法的秘密密钥的 SecretKeyFactory 对象。

返回一个封装 SecretKeyFactorySpi 实现的新 SecretKeyFactory 对象,该实现取自指定的 Provider 对象。注意,指定 Provider 对象无需在提供者列表中注册。

抛出异常:

NullPointerException - 如果指定的算法为 null。

NoSuchAlgorithmException - 如果不能从指定的 Provider 对象获得指定算法的 SecretKeyFactorySpi 实现。

IllegalArgumentException - 如果 provider 为 null。

④public final Provider getProvider()    返回此

SecretKeyFactory 对象的提供者。

⑤public final String getAlgorithm()

返回此 SecretKeyFactory 对象的算法名称。 此名称与在某个创建此

SecretKeyFactory 对象的 getInstance 调用中指定的名称相同。

⑥public final SecretKey generateSecret(KeySpec keySpec) throws InvalidKeySpecException     根据提供的密钥规范(密钥材料)生成

SecretKey 对象。

参数:keySpec - 秘密密钥的规范(密钥材料)

返回:秘密密钥

抛出: InvalidKeySpecException - 如果给定密钥规范不适合生成秘密密钥的秘密密钥工厂。

⑦public final KeySpec getKeySpec(SecretKey key, Class keySpec) throws InvalidKeySpecException   以请求的格式返回给定密钥对象的规范(密钥材料)。

参数:key - 密钥     keySpec - 所请求的格式,密钥材料将以此格式返回

返回:所请求格式的底层密钥规范(密钥材料)

抛出:InvalidKeySpecException - 如果所请求的密钥规范不适合给定的密钥(例如,与

key 和 keySpec 关联的算法不匹配,或者 key 在加密硬件设备上引用一个密钥而

keySpec 是基于软件的密钥规范),或者无法处理给定的密钥(例如,给定的密钥具有此秘密密钥工厂不支持的算法或格式)。

⑧public final SecretKey translateKey(SecretKey key) throws InvalidKeyException

将一个密钥对象(其提供者未知或可能不受信任)转换为此秘密密钥工厂的相应密钥对象。

参数:key - 其提供者未知或不受信任的密钥

返回:已转换的密钥

抛出:InvalidKeyException - 如果此秘密密钥工厂无法处理给定的密钥。

例如下面例子:

try {

// 获取密钥工厂类对象

SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");

byte[] DESkey = "abcdefghijk".getBytes("UTF-8");// 设置密钥

DESKeySpec keySpec = new DESKeySpec(DESkey);// 设置密钥参数

Key key = keyFactory.generateSecret(keySpec);// 得到密钥对象

} catch (Exception e) {

e.printStackTrace();

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值