javax.crypto.spec

java.lang.Object
  继承者 javax.crypto.spec.SecretKeySpec
所有已实现的接口:
Serializable, Key, KeySpec, SecretKey

public class SecretKeySpec
     
extends Object
implements KeySpec, SecretKey

此类以与 provider 无关的方式指定一个密钥。

可以使用此类来根据一个字节数组构造一个 SecretKey,而无须通过一个(基于 provider 的)SecretKeyFactory

此类仅对能表示为一个字节数组并且没有任何与之相关联的钥参数的原始密钥有用,如,DES 或者 Triple DES 密钥。

从以下版本开始:
1.4
另请参见:
SecretKey, SecretKeyFactory, 序列化表格

字段摘要
 
从接口 javax.crypto.SecretKey 继承的字段
serialVersionUID
 
构造方法摘要
SecretKeySpec(byte[] key, int offset, int len, String algorithm)
          根据给定的字节数组构造一个密钥,使用 key 中的始于且包含 offset 的前 len 个字节。
SecretKeySpec(byte[] key, String algorithm)
          根据给定的字节数组构造一个密钥。
 
方法摘要
 boolean equals(Object obj)
          测试给定对象与此对象的相等性。
 String getAlgorithm()
          返回与此密钥关联的算法的名称。
 byte[] getEncoded()
          返回此密钥的密钥内容。
 String getFormat()
          返回此密钥编码格式的名称。
 int hashCode()
          计算此对象的哈希码值。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

构造方法详细信息

SecretKeySpec

public SecretKeySpec(byte[] key,
                     String algorithm)
根据给定的字节数组构造一个密钥。

此构造方法不检查给定的字节实际上是否指定了一个指定算法的密钥。例如,如果算法是 DES,此构造方法不检查 key 是否是 8 字节长,并且也不检查是否是全弱或者半弱密钥。为了执行这些检查,应当使用一个特定于算法的密钥规范(在此情况下是:DESKeySpec)。

参数:
key - 密钥的密钥内容。复制该数组的内容来防止后续修改。
algorithm - 与给定的密钥内容相关联的密钥算法的名称。有关标准算法名称的信息请参见 Java Cryptography Architecture Reference Guide 中的附录 A。
抛出:
IllegalArgumentException - 如果 algorithm 为 null 或者 key 为 null 或空。

SecretKeySpec

public SecretKeySpec(byte[] key,
                     int offset,
                     int len,
                     String algorithm)
根据给定的字节数组构造一个密钥,使用 key 中的始于且包含 offset 的前 len 个字节。

组成密钥的字节在 key[offset]key[offset+len-1] 范围内(包含两者)。

此构造方法不检查给定的字节实际上是否指定了一个指定算法的密钥。例如,如果算法是 DES,此构造方法不检查 key 是否是 8 字节长,并且也不检查是否是全弱或者半弱密钥。为了执行这些检查,必须使用一个特定于算法的密钥规范(在此情况下是:DESKeySpec)。

参数:
key - 密钥的密钥内容。复制该数组始于且包含 offset 的前 len 个字节来防止后续修改。
offset - key 中的偏移量,密钥内容从此处开始。
len - 密钥内容的长度。
algorithm - 与给定的密钥内容相关联的密钥算法的名称。有关标准算法名称的信息请参见 Java Cryptography Architecture Reference Guide 中的附录 A。
抛出:
IllegalArgumentException - 如果 algorithm 为 null 或者 key 为 null、空或太短(即 key.length-offset 小于 len)。
ArrayIndexOutOfBoundsException - 如果 offset 或者 len 索引字节在 key 范围外,则抛出该异常。
方法详细信息

getAlgorithm

public String getAlgorithm()
返回与此密钥关联的算法的名称。

指定者:
接口 Key 中的 getAlgorithm
返回:
密钥算法。

getFormat

public String getFormat()
返回此密钥编码格式的名称。

指定者:
接口 Key 中的 getFormat
返回:
字符串 "RAW"。

getEncoded

public byte[] getEncoded()
返回此密钥的密钥内容。

指定者:
接口 Key 中的 getEncoded
返回:
密钥内容。每次调用此方法都返回一个新数组。

hashCode

public int hashCode()
计算此对象的哈希码值。相等的对象也将具有相同的哈希码。

覆盖:
Object 中的 hashCode
返回:
此对象的一个哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
测试给定对象与此对象的相等性。如果两个 SecretKeySpec 对象都是具有相同的区分大小写的算法名称和密钥编码的 SecretKey 实例,则认为这两者相等。

覆盖:
Object 中的 equals
参数:
obj - 要与此对象进行相等性测试的对象。
返回:
如果认为对象相等则返回 true;如果 obj 为 null 或其他情况则返回 false。
另请参见:
Object.hashCode(), Hashtable