【发布时间】:2012-08-14 08:29:02
【问题描述】:
我在某处读到,将敏感密钥存储为 char[] 而不是 String 更好,因为后者可以在内存中找到。由于 JPasswordField 的 getText() 方法已被弃用,这也有点道理。
这是真的吗?
【问题讨论】:
-
仅供参考:
String将其内容存储为char[]。 -
@SoboLAN 是的,String 基本上是一个 char[] 内部,但是我们可以篡改声明为 char[] 的变量中保存的单个字符,而我们不能做任何事情来修改保存在一个String 对象,并且简单地将指向 String 的变量置空并不能保证它会被垃圾收集器删除。而且即使删除也不能保证String使用的内存很快就会被覆盖。
-
@user1515834 我的意思是说:如果您查看 RAM 内部,那么
String和char[]看起来都一样。因为它们基本相同。对于黑客来说,这不会有太大的不同。至于char[]内容的即时更改与垃圾收集String:是的,你是对的。