gpt4 book ai didi

java - 将纯文本存储在 Java 8 闭包中

转载 作者:行者123 更新时间:2023-11-29 04:25:15 27 4
gpt4 key购买 nike

我曾经看过 Douglas Crockford 的一次演讲,在 javascript 的上下文中,他提到将 secret 存储在闭包中可能很有用。

我想这可以在 Java 中像这样天真地实现:

public static Supplier<String> passwordStore(String encryptedPassword){
String plainTextPassword = encryptedPassword; //do some decryption
return () -> plainTextPassword;
}

我想知道:这样做有什么好处吗?它可能在某种程度上不太安全吗?

最佳答案

没有理由这样做。将密码存储在字符数组中,因为如果要将它们打印出来,必须将它们显式转换为字符串。

考虑以下示例:

String stringPassword = "password";
char[] charactersPassword = new char[]{'p','a','s','s','w','o', 'r', 'd'};

System.out.println("Password: " + stringPassword); // Password: password
System.out.println("Password: " + charactersPassword); // Password: [C@6ce253f1

主要思想是您可以清除数组的项目,因为它不是不可变的(@Klitos Kyriacou)。

Arrays.fill(charactersPassword, '0');

此外,如果您将密码存储为纯文本 - 字符串,它是不可变的,它将在内存中保留很长时间(仍然可以访问)直到垃圾收集器处理它。

无论如何,强烈建议关注一些安全库,它可以处理比发明一种新的(通常仍然有风险的)方法更多的东西。

关于java - 将纯文本存储在 Java 8 闭包中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46708302/

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