asp.net 我应该使用什么来存储密码,String还是Char[]?[duplicate]

lsmd5eda  于 2023-01-22  发布在  .NET
关注(0)|答案(1)|浏览(131)
    • 此问题在此处已有答案**:

When would I need a SecureString in .NET?(11个答案)
八年前就关门了。
我读了下面的Java文章(为什么字符数组比字符串更适合存储密码):
1)由于字符串在Java中是不可变的,如果您将密码存储为纯文本,它将在内存中可用,直到垃圾收集器清除它,并且由于使用了字符串:在字符串池中可重用,它很有可能会长时间保留在内存中,这构成了安全威胁。
由于任何一个谁有权访问内存转储可以找到明文密码,这是另一个原因,你应该总是使用加密密码比纯文本.由于字符串是不可变的有没有办法字符串的内容可以改变,因为任何改变都会产生新的字符串,而如果使用char [],仍然可以将其所有元素设置为空或零,因此,将密码存储在字符数组中可以明显降低窃取密码的安全风险。
2)Java自己推荐使用JPasswordField的getPassword()方法,它返回一个char [],以及不推荐使用的getText()方法,它以明文形式返回密码,说明安全原因。最好遵循Java团队的建议,坚持标准,而不是违背标准。
3)使用字符串总是有在日志文件或控制台中打印纯文本的风险,但如果使用数组,您将不会打印数组的内容,而是打印其内存位置。虽然不是一个真正的原因,但仍然有意义。

String strPassword="Unknown";
char[] charPassword= new char[]{'U','n','k','w','o','n'};
System.out.println("String password: " + strPassword);
System.out.println("Character password: " + charPassword);
  • 输出:*
String password: Unknown
Character password: [C@110b053

关于上面的文章,它在. NET中是如何工作的,是相同的还是其他的,关于 * String * 和 * char * 如何工作的深入解释是什么?

3zwjbxry

3zwjbxry1#

每种语言都有它的引用,你可以搜索到它们,下面是string和char的两个引用,分别是C#C++

    • 一对一 *
    • 一个三个 *

相关问题