当我准备工作时,OCPJP
遇到了一个主题-“从控制台读取用户输入”。
有一个示例,它username
在String
引用中读取,而password
在char[]
数组中读取,但是我不明白为什么它使用char数组。这是代码:-
Console console = System.console();
String username = console.readLine("User Name? ");
char[] password = console.readPassword("Password? ");
这在我的脑海中引起了疑问。为什么我们不使用String引用存储密码。由于Strings
它们是不可变的,因此读取字符串中的密码必须更加安全,因为无法更改其内容。
那么,什么是阅读整点password
在char[]
阵列..
谁能在这件事上阐明一点?
正如您所说的那样,字符串是不可变的,这意味着一旦创建了字符串,如果另一个进程可以转储内存,就无法(好的,可以通过反射)在GC启动之前就摆脱掉数据。
使用数组,您可以在使用完数据后显式擦除数据:您可以使用所需的任何内容覆盖该数组,并且即使在垃圾回收之前,密码也不会出现在系统中的任何位置。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句