java中的key接口解析

 更新时间:2014年01月04日 16:14:46   作者:  
这篇文章主要介绍了java中的key接口,有需要的朋友可以参考一下

该接口实现了序列化,声明为 public interface Key extends Serializable

Key 是所有密钥的顶层接口。它定义了供所有密钥对象共享的功能。所有的密钥都具有三个特征:

①、算法

这是该密钥的密钥算法。密钥算法通常是加密或不对称操作算法(如 DSA 或 RSA),它们将和那些算法及相关的算法(例如 MD5 和 RSA,SHA-1 和 RSA、Raw DSA 等等)一起使用。用 getAlgorithm 方法获取密钥算法的名称。

②、编码形式

这是密钥的外部编码形式,在 Java 虚拟机之外需要密钥的标准表示形式时以及将密钥传输到其他某些部分时使用。密钥根据标准格式(如 X.509 SubjectPublicKeyInfo 或 PKCS#8)编码,使用 getEncoded 方法返回。注:ASN.1 类型 SubjectPublicKeyInfo 的语法定义如下:

复制代码 代码如下:

SubjectPublicKeyInfo ::= SEQUENCE { algorithm AlgorithmIdentifier, subjectPublicKey BIT STRING }
AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL }

③、格式

这是已编码密钥的格式的名称。它由 getFormat 方法返回。

密钥通常通过密钥生成器、证书或用来管理密钥的各种 Identity 类来获取。密钥也可以通过使用密钥工厂(请参见 KeyFactory)从密钥规范(基础密钥材料的透明表示形式)获取。

密钥应该使用 KeyRep 作为其序列化的表示形式。注意,序列化的 Key 可能包含不应该在不可信任的环境中显示的敏感信息。有关更多信息,请参见序列化规范的安全附录。

1、字段:
static final long serialVersionUID    设置为指示与以前的类版本序列化兼容的类指纹。 2、方法详细:

①String getAlgorithm()    返回此密钥的标准算法名称。例如,"DSA" 指示此密钥是一个 DSA 密钥。

②String getFormat()         返回此密钥的基本编码格式,如果此密钥不支持编码,则返回 null。如果存在此密钥的 ASN.1 规范,则根据合适的 ASN.1 数据格式命名基本编码格式。例如,公钥的 ASN.1 数据格式名称是 SubjectPublicKeyInfo(由 X.509 标准定义);在这种情况下,返回的格式为 "X.509"。类似地,私钥的 ASN.1 数据格式名称是 PrivateKeyInfo(由 PKCS #8 标准定义);在这种情况下,返回的格式为 "PKCS#8"。

③byte[] getEncoded()   返回基本编码格式的密钥,如果此密钥不支持编码,则返回 null。

相关文章

  • IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案

    IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案

    这篇文章主要介绍了IntelliJ IDEA 报错:找不到包或者找不到符号的问题及解决方案,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • SpringBoot配置拦截器实现过程详解

    SpringBoot配置拦截器实现过程详解

    在系统中经常需要在处理用户请求之前和之后执行一些行为,例如检测用户的权限,或者将请求的信息记录到日志中,即平时所说的"权限检测"及"日志记录",下面这篇文章主要给大家介绍了关于在SpringBoot项目中整合拦截器的相关资料,需要的朋友可以参考下
    2022-10-10
  • SharedWorkerGlobalScope属性数据共享示例解析

    SharedWorkerGlobalScope属性数据共享示例解析

    这篇文章主要为大家介绍了SharedWorkerGlobalScope属性数据共享示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-12-12
  • Java并发编程——volatile关键字

    Java并发编程——volatile关键字

    这篇文章主要介绍了Java并发编程——volatile关键字的相关资料,帮助大家更好的理解和学习Java并发编程,感兴趣的朋友可以了解下
    2020-10-10
  • springboot 微信授权网页登录操作流程

    springboot 微信授权网页登录操作流程

    这篇文章主要介绍了springboot 微信授权网页登录操作流程,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java中BufferedReader与Scanner读入的区别详解

    Java中BufferedReader与Scanner读入的区别详解

    这篇文章主要介绍了Java中BufferedReader与Scanner读入的区别详解,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • 关于mybatis使用${}时sql注入的问题

    关于mybatis使用${}时sql注入的问题

    这篇文章主要介绍了关于mybatis使用${}时sql注入的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Java设计模式之备忘录模式

    Java设计模式之备忘录模式

    这篇文章主要介绍了Java设计模式之备忘录模式,备忘录模式(Memento Pattern),属于行为型设计模式,目的是用于保存一个对象在某一时刻的状态,以便于在将来某个时刻根据此状态恢复该对象,需要的朋友可以参考下
    2023-12-12
  • String与Blob互转和file文件与Blob互转方式

    String与Blob互转和file文件与Blob互转方式

    这篇文章主要介绍了String与Blob互转和file文件与Blob互转方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • 深入理解Spring中bean的生命周期介绍

    深入理解Spring中bean的生命周期介绍

    本篇文章主要介绍了深入理解Spring中bean的生命周期介绍,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03

最新评论