以下Java代码是否足以清除内存中的秘密密钥(将其所有字节值设置为0)?
zerorize(SecretKey key)
{
byte[] rawKey = key.getEncoded();
Arrays.fill(rawKey, (byte) 0);
}
换句话说,
getEncoded
方法是否返回副本或对实际键的引用?如果返回副本,那么如何清除密钥作为安全措施? 最佳答案
在尝试清除密钥之前,应首先检查SecretKey
接口的实现是否也实现了javax.security.auth.Destroyable
接口。如果是这样,当然最好。