- java.lang.Object
-
- javax.crypto.spec.SecretKeySpec
-
- All Implemented Interfaces:
-
Serializable
,Key
,KeySpec
,SecretKey
,Destroyable
public class SecretKeySpec extends Object implements KeySpec, SecretKey
该类以独立于提供商的方式指定密钥。它可以用于从字节数组构造
SecretKey
,而无需经过(基于提供者的)SecretKeyFactory
。此类仅对可以表示为字节数组并且没有与其相关联的关键参数的原始密钥(例如DES或三重DES密钥)有用。
- 从以下版本开始:
- 1.4
- 另请参见:
-
SecretKey
,SecretKeyFactory
, Serialized Form
-
-
构造方法摘要
构造方法 Constructor 描述 SecretKeySpec(byte[] key, int offset, int len, String algorithm)
根据给定的字节数组的秘密密钥,使用所述第一len
的字节key
,起始于offset
以下。SecretKeySpec(byte[] key, String algorithm)
从给定的字节数组构造一个秘密密钥。
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 boolean
equals(Object obj)
测试指定对象和此对象之间的相等性。String
getAlgorithm()
返回与该密钥相关联的算法的名称。byte[]
getEncoded()
返回此密钥的密钥材料。String
getFormat()
返回此密钥的编码格式的名称。int
hashCode()
计算对象的哈希码值。-
Methods inherited from interface javax.security.auth.Destroyable
destroy, isDestroyed
-
-
-
-
构造方法详细信息
-
SecretKeySpec
public SecretKeySpec(byte[] key, String algorithm)
从给定的字节数组构造一个秘密密钥。该构造函数不检查给定字节是否确实指定了指定算法的秘密密钥。 例如,如果算法为DES,则该构造函数不会检查
key
是否为8字节长,也不会检查弱或半弱的密钥。 为了执行这些检查,应该使用特定于算法的密钥规范类(在这种情况下为DESKeySpec
)。- 参数
-
key
- 密钥的关键材料。 复制数组的内容以防止后续修改。 -
algorithm
- 与给定密钥材料相关联的秘密密钥算法的名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names文档。 - 异常
-
IllegalArgumentException
- 如果algorithm
为空或key
为空或为空。
-
SecretKeySpec
public SecretKeySpec(byte[] key, int offset, int len, String algorithm)
根据给定的字节数组的秘密密钥,使用所述第一len
的字节key
,起始于offset
以下。构成秘密密钥的字节是
key[offset]
和key[offset+len-1]
之间的字节。该构造函数不检查给定字节是否确实指定了指定算法的秘密密钥。 例如,如果算法为DES,则该构造函数不会检查
key
是否为8字节长,并且也不会检查弱或半弱的密钥。 为了执行这些检查,必须使用特定于算法的密钥规范类(在这种情况下为DESKeySpec
)。- 参数
-
key
- 密钥的关键材料。 从offset
包括)开始的阵列的第一个len
字节被复制以防止后续修改。 -
offset
-key
中的关键材料启动时的偏移量。 -
len
- 关键材料的长度。 -
algorithm
- 与给定密钥材料相关联的秘密密钥算法的名称。 有关标准算法名称的信息,请参阅Java Security Standard Algorithm Names文档。 - 异常
-
IllegalArgumentException
- 如果algorithm
为null或key
为空,空或太短,即key.length-offset<len
。 -
ArrayIndexOutOfBoundsException
- 抛出offset
或len
索引字节外的key
。
-
-
方法详细信息
-
getAlgorithm
public String getAlgorithm()
返回与该密钥相关联的算法的名称。- Specified by:
-
getAlgorithm
在接口Key
- 结果
- 秘密密钥算法。
-
getEncoded
public byte[] getEncoded()
返回此密钥的密钥材料。- Specified by:
-
getEncoded
接口Key
- 结果
- 关键材料。 每次调用此方法时都会返回一个新数组。
-
hashCode
public int hashCode()
计算对象的哈希码值。 相等的对象也将具有相同的哈希码。- 重写:
-
hashCode
Object
- 结果
- 该对象的哈希码值。
- 另请参见:
-
Object.equals(java.lang.Object)
,System.identityHashCode(java.lang.Object)
-
equals
public boolean equals(Object obj)
测试指定对象和此对象之间的相等性。 如果两个SecretKeySpec对象都是具有相同的不区分大小写的算法名称和密钥编码的SecretKey实例,则它们被认为是相等的。- 重写:
-
equals
在Object
- 参数
-
obj
- 测试与此对象相等的对象。 - 结果
-
如果对象被视为相等,
obj
true,如果obj
为空,obj
false。 - 另请参见:
-
Object.hashCode()
,HashMap
-
-