以下Java代码是否足以清除内存中的秘密密钥(将其所有字节值设置为0)?

zerorize(SecretKey key)
{
    byte[] rawKey = key.getEncoded();
    Arrays.fill(rawKey, (byte) 0);
}

换句话说,getEncoded方法是否返回副本或对实际键的引用?如果返回副本,那么如何清除密钥作为安全措施?

最佳答案

在尝试清除密钥之前,应首先检查SecretKey接口的实现是否也实现了javax.security.auth.Destroyable接口。如果是这样,当然最好。

08-05 09:16