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();
}
java secretkey_Java中的SecretKeyFactory类 | 学步园相关推荐
- python中类的嵌套_python中的嵌套类 | 学步园
在.NET和JAVA语言中看到过嵌套类的实现,作为外部类一个局部工具还是很有用的,今天在python也看到了很不错支持一下.动态语言中很好的嵌套类的实现,应该说嵌套类解决设计问题同时简化了程序,值得学 ...
- java反射api研究_深入研究Java 8中的可选类API
java反射api研究 作为Java程序员,我们所有人都经历了以下情况:我们调用一个方法来获取某个值,然后代替直接对返回值调用某些方法,我们首先必须检查返回值是否不为null,然后在返回值. 这是像G ...
- 深入了解Java 8中的可选类API
作为Java程序员,我们所有人都经历了以下情况:我们调用一个方法来获取某个值,然后代替直接对返回值调用某些方法,我们首先必须检查返回值不为null,然后在返回值. 这是像Guava这样的外部API试图 ...
- java中main方法返回类型是6_[单选] Java application中的主类需包含main方法,main方法的返回类型是什么()。...
[单选] Java application中的主类需包含main方法,main方法的返回类型是什么(). 更多相关问题 关于超声在人体中传播的速度,叙述正确的有A.与人体组织的弹性有关B.与人体组织的 ...
- 在java程序中定义的类有两种成员_java试题 急需答案 谢谢!!!
三.填空(每小题2分,共10分)1.在Applet中,创建一个具有10行45列的多行文本区对象ta的语句为:2.创建一个标识有"关闭"字样的标签对象gb的语句为.3.方法是一种仅有 ...
- java程序设计专业介绍_简介Java编程中的Object类
这篇文章主要介绍了简介Java编程中的Object类,是Java入门学习中的基础知识,需要的朋友可以参考下 Object 类位于 java.lang 包中,是所有 Java 类的祖先,Java 中的每 ...
- java throwable判断,判断(2分) Java语言中的所有异常类都是java.lang.Throwable的子类。...
判断(2分) Java语言中的所有异常类都是java.lang.Throwable的子类. 更多相关问题 This artical is probably ________. 某企业2010年12月3 ...
- 一个java文件中多个类
一个.java文件中可以有很多类.不过注意以下几点: 1.public 权限的类只能有一个(也可以一个都没有,但最多只有1个) 2.这个.java文件的文件名必须是public类的类名(一般的情况下, ...
- java bufferedread_java中关于bufferedreader类中read方法
java中关于bufferedreader类中read方法 关注:58 答案:2 mip版 解决时间 2021-01-14 05:40 提问者孤城古巷 2021-01-13 06:28 如下.此时 ...
最新文章
- CellRanger单细胞基因表达分析基础流程
- POJ 2182 Lost Cows (求序列第k大)
- 利用http协议发布博文评论
- 21世纪初最有影响力的20篇计算机视觉期刊论文 及 邓亚峰老师关于人脸识别方面总结
- vue怎么截取时间年月_Vue + Element 获取标准时间、时间戳进行转换与操作(年月日)...
- 硬件编程:77条STM32知识汇总
- c++从入门到精通_资料下载:从入门到精通,手把手教你学DSP
- 敏捷开发生态系统系列之一:序言及需求管理生态(客户价值导向-可工作软件-响应变化)...
- 每天一个linux命令(30):cal 命令
- 2.开发Mip组件的第一个demo(点击关闭按钮,关闭外层dom)
- 电脑公司最新稳定win7系统下载
- Webstorm如何下载插件
- python图像差分法目标检测_OpenCV实现帧差法检测运动目标
- (二)如何使用Progress Bar
- R语言中igraph包的使用(邻接矩阵)
- Mac操作系统下怎么显示隐藏文件
- 从移动应用创作者到产品总监—专访微软MVP邹建峰
- 多边形画椭圆算法java_运用椭圆画法,45行代码画出随意正多边形
- hue数据导出到hdfs_如何将智能灯泡迁移到新的Philips Hue Bridge
- tensorflow 1.12使用中的问题
热门文章
- 虚拟机无法访问主机mysql_虚拟机linux端mysql数据库无法远程访问的解决办法
- Java黑皮书课后题第7章:**7.5(打印不同的数)编写一个程序,读入10个数,显示互不相同的数的数目,并以输入的顺序显示这些数字,以输入的顺序显示这些数字,以一个空格分隔。
- 2010年北京大学计算机研究生机试真题
- Python之面向对象四
- leetcode-Combination Sum-39
- thinkphp如果表名有下划线需要用Model
- hdu 3047 Zjnu Stadium(并查集)
- POJ 2533 Longest Ordered Subsequence
- Unity3D Input按键系统
- iOS之深入解析“锁”的底层原理