为什么我们不应该使用String在Java中存储密码,但可以使用String在C语言中存储密码?

时间:2015-06-15 18:57:47

标签: java c

在讨论中,我们的一位大四学生告诉我们不应该使用String在Java项目中存储密码,因为它存在安全风险。 但它在C项目中是可以接受的。我不明白为什么他这么说。 谁能告诉我为什么这么做?

1 个答案:

答案 0 :(得分:7)

在Java中,字符串是不可变的,因此一旦使用String存储密码,就无法更改内容,因为任何更改都将产生新的String。 并且包含密码的String将在内存中可用,直到它被垃圾收集。因此它将长时间保留在内存中,这可能存在安全风险。

但是,在 C语言中,String是空终止字符数组,您可以将所有数组元素设置为空或零,因此密码不会保留在记忆中。