代码之家  ›  专栏  ›  技术社区  ›  Anthony

将WPF密码框转换为C中的SecureString#

  •  5
  • Anthony  · 技术社区  · 14 年前

    我正试图将WPF密码框中的数据转换为安全字符串。怎么做到的? 到目前为止我有:

     SecureString pass = new SecureString();
            pass.AppendChar(pbox1.Password);
    

    当然,这不起作用,那么如何在不创建常规字符串的情况下获取密码数据呢?

    3 回复  |  直到 14 年前
        1
  •  8
  •   Pharabus    14 年前

    你需要读每个字符

    SecureString pass = new SecureString();
    
    foreach (char c in pbox1.Password)
    {
      pass.AppendChar(c);
    }
    

    或者更安全地使用SecurePassword属性

    SecureString pass = pbox1.SecurePassword
    
        2
  •  17
  •   hemp    14 年前

    Per MSDN :

    当您获得密码属性时 值,将密码公开为 内存中的纯文本。为了避免这种情况 潜在安全风险,使用 SecurePassword属性以获取 作为安全字符串的密码。

    除非绝对需要字符串的纯文本版本,否则应避免使用password属性。在这种情况下,直接检索SecureString。

        3
  •  3
  •   Nick Barrett    13 年前
    SecureString pass = pbox1.SecurePassword.Copy();