为什么我们不应该使用字符串来存储Java中的密码,而可以用字符串来存储C语言中的密码呢?

Why we should not use String for Storing password in Java but can use String for Storing password in C language?

本问题已经有最佳答案,请猛点这里访问。

在一个讨论中,我们的一位资深人士告诉我们,在Java项目中不应该使用String来存储密码,因为这是一个安全风险。但在C项目中是可以接受的。我不明白他为什么这么说。有人能告诉我为什么吗?


在爪哇中,字符串是不可变的,因此一旦使用字符串存储密码,就不可能更改内容,因为任何更改都会生成新字符串。并且包含密码的字符串将在内存中可用,直到它被垃圾收集为止。因此,它将长期保存在内存中,这可能是一个安全风险。

但是,在C语言中,字符串是以空结尾的字符数组,您可以将所有数组元素设置为空或零,因此密码不会保留在内存中。