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();

}

java secretkey_Java中的SecretKeyFactory类 | 学步园相关推荐

  1. python中类的嵌套_python中的嵌套类 | 学步园

    在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下.动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学 ...

  2. java反射api研究_深入研究Java 8中的可选类API

    java反射api研究 作为Java程序员,我们所有人都经历了以下情况:我们调用一个方法来获取某个值,然后代替直接对返回值调用某些方法,我们首先必须检查返回值是否不为null,然后在返回值. 这是像G ...

  3. 深入了解Java 8中的可选类API

    作为Java程序员,我们所有人都经历了以下情况:我们调用一个方法来获取某个值,然后代替直接对返回值调用某些方法,我们首先必须检查返回值不为null,然后在返回值. 这是像Guava这样的外部API试图 ...

  4. java中main方法返回类型是6_[单选] Java application中的主类需包含main方法,main方法的返回类型是什么()。...

    [单选] Java application中的主类需包含main方法,main方法的返回类型是什么(). 更多相关问题 关于超声在人体中传播的速度,叙述正确的有A.与人体组织的弹性有关B.与人体组织的 ...

  5. 在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!

    三.填空(每小题2分,共10分)1.在Applet中,创建一个具有10行45列的多行文本区对象ta的语句为:2.创建一个标识有"关闭"字样的标签对象gb的语句为.3.方法是一种仅有 ...

  6. java程序设计专业介绍_简介Java编程中的Object类

    这篇文章主要介绍了简介Java编程中的Object类,是Java入门学习中的基础知识,需要的朋友可以参考下 Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每 ...

  7. java throwable判断,判断(2分) Java语言中的所有异常类都是java.lang.Throwable的子类。...

    判断(2分) Java语言中的所有异常类都是java.lang.Throwable的子类. 更多相关问题 This artical is probably ________. 某企业2010年12月3 ...

  8. 一个java文件中多个类

    一个.java文件中可以有很多类.不过注意以下几点: 1.public 权限的类只能有一个(也可以一个都没有,但最多只有1个) 2.这个.java文件的文件名必须是public类的类名(一般的情况下, ...

  9. java bufferedread_java中关于bufferedreader类中read方法

    java中关于bufferedreader类中read方法 关注:58  答案:2  mip版 解决时间 2021-01-14 05:40 提问者孤城古巷 2021-01-13 06:28 如下.此时 ...

最新文章

  1. CellRanger单细胞基因表达分析基础流程
  2. POJ 2182 Lost Cows (求序列第k大)
  3. 利用http协议发布博文评论
  4. 21世纪初最有影响力的20篇计算机视觉期刊论文 及 邓亚峰老师关于人脸识别方面总结
  5. vue怎么截取时间年月_Vue + Element 获取标准时间、时间戳进行转换与操作(年月日)...
  6. 硬件编程:77条STM32知识汇总
  7. c++从入门到精通_资料下载:从入门到精通,手把手教你学DSP
  8. 敏捷开发生态系统系列之一:序言及需求管理生态(客户价值导向-可工作软件-响应变化)...
  9. 每天一个linux命令(30):cal 命令
  10. 2.开发Mip组件的第一个demo(点击关闭按钮,关闭外层dom)
  11. 电脑公司最新稳定win7系统下载
  12. Webstorm如何下载插件
  13. python图像差分法目标检测_OpenCV实现帧差法检测运动目标
  14. (二)如何使用Progress Bar
  15. R语言中igraph包的使用(邻接矩阵)
  16. Mac操作系统下怎么显示隐藏文件
  17. 从移动应用创作者到产品总监—专访微软MVP邹建峰
  18. 多边形画椭圆算法java_运用椭圆画法,45行代码画出随意正多边形
  19. hue数据导出到hdfs_如何将智能灯泡迁移到新的Philips Hue Bridge
  20. tensorflow 1.12使用中的问题

热门文章

  1. 虚拟机无法访问主机mysql_虚拟机linux端mysql数据库无法远程访问的解决办法
  2. Java黑皮书课后题第7章:**7.5(打印不同的数)编写一个程序,读入10个数,显示互不相同的数的数目,并以输入的顺序显示这些数字,以输入的顺序显示这些数字,以一个空格分隔。
  3. 2010年北京大学计算机研究生机试真题
  4. Python之面向对象四
  5. leetcode-Combination Sum-39
  6. thinkphp如果表名有下划线需要用Model
  7. hdu 3047 Zjnu Stadium(并查集)
  8. POJ 2533 Longest Ordered Subsequence
  9. Unity3D Input按键系统
  10. iOS之深入解析“锁”的底层原理