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。