可能存在重复:
为什么比起 String,char[] 更适合用于存储密码?
我曾经看到过一个观点,认为将敏感的密码等秘钥存储为 char[] 而非 String 更安全,因为后者可能会留存在内存中。这个观点似乎有点道理,也由于 JPasswordField 的 getText() 方法已被弃用。
这是真的吗?
可能存在重复:
为什么比起 String,char[] 更适合用于存储密码?
我曾经看到过一个观点,认为将敏感的密码等秘钥存储为 char[] 而非 String 更安全,因为后者可能会留存在内存中。这个观点似乎有点道理,也由于 JPasswordField 的 getText() 方法已被弃用。
这是真的吗?
char[]
中使用密码后,可以随时用0或随机值覆盖它。但是,您不能使用String
对象进行覆盖,因为Java中的字符串是不可变对象,直到垃圾回收器启动并清除它们之前,它们一直存在。
String
将其内容存储为char[]
。 - Radu MurzeaString
和char[]
看起来是一样的。因为它们基本上是相同的。对于黑客来说,这不会有太大的区别。至于更改char[]
内容与垃圾回收String
的立即变化:是的,你是正确的。 - Radu Murzea