gpt4 book ai didi

Java 敏感数据 : char[] vs String? 有什么意义?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:20:08 26 4
gpt4 key购买 nike

我们已经知道使用 char[] 而不是 String 来处理敏感数据的建议/做法。有多种原因。一种是在不再需要敏感数据后立即清理它们:

char[] passwd = passwordProvider.getKeyStorePassword();
KeyStore keystore = KeyStore.getInstance("JKS");

// TODO: Create the input stream;
keystore.load(inputstream, passwd);

System.arraycopy(new char[passwd.length], 0, passwd, 0, passwd.length);

// Please continue...

现在的问题是:当敏感数据最初以 String 形式出现时,它(即使用 char[])有意义吗(特别是上面提到的那一点)值(value)?例如:

char[] passwd = passwordProvider.getKeyStorePassword().toCharArray();
KeyStore keystore = KeyStore.getInstance("JKS");

// TODO: using the passwd, load the keystore;

System.arraycopy(new char[passwd.length], 0, passwd, 0, passwd.length);

// Please continue...

提前致谢。

更新 2:我将重新表述这个问题:在这个特定的上下文中(忘掉 future 的变化或其他任何事情),“清除字符数组的内容”这一行有什么用吗?

更新 1:它不是 Why is char[] preferred over String for passwords? 的重复我知道故事是什么。我在这个特定的上下文中问,它仍然有意义吗?

最佳答案

在我看来,它返回 String 的密码提供程序的 API 设计中存在安全问题。

但是,如果您必须使用该 API,立即转换为 char[] 意味着您不会阻止 String实例不会被 GC,因为您持有对它的引用的时间不会超过绝对必要的时间。

因此,在这里使用 char[] 是有意义的,因为您“不会让它变得更糟”。

关于Java 敏感数据 : char[] vs String? 有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42021346/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com