[C#] 문자열을 SecureString으로 변환

어떻게 변환하기 StringSecureString?



답변

당신은하지 않습니다. SecureString 개체를 사용하는 모든 이유는 문자열 개체 (메모리에로드되고 가비지 수집 전까지 일반 텍스트로 유지됨)를 만들지 않기위한 것입니다. 그러나 문자를 추가하여 SecureString에 문자를 추가 할 수 있습니다.

var s = new SecureString();
s.AppendChar('d');
s.AppendChar('u');
s.AppendChar('m');
s.AppendChar('b');
s.AppendChar('p');
s.AppendChar('a');
s.AppendChar('s');
s.AppendChar('s');
s.AppendChar('w');
s.AppendChar('d');


답변

SecureString와 사이를 변환하는 또 다른 방법이 있습니다 String.

1. 문자열을 SecureString으로

SecureString theSecureString = new NetworkCredential("", "myPass").SecurePassword;

2. SecureString에서 문자열로

string theString = new NetworkCredential("", theSecureString).Password;

여기에 링크가 있습니다


답변

아래 방법은 문자열을 보안 문자열로 변환하는 데 도움이됩니다.

private SecureString ConvertToSecureString(string password)
{
    if (password == null)
        throw new ArgumentNullException("password");

    var securePassword = new SecureString();

    foreach (char c in password)
        securePassword.AppendChar(c);

    securePassword.MakeReadOnly();
    return securePassword;
}


답변

다음을 따를 수 있습니다.

string password = "test";
SecureString sec_pass = new SecureString();
Array.ForEach(password.ToArray(), sec_pass.AppendChar);
sec_pass.MakeReadOnly();


답변

다음은 저렴한 linq 트릭입니다.

            SecureString sec = new SecureString();
            string pwd = "abc123"; /* Not Secure! */
            pwd.ToCharArray().ToList().ForEach(sec.AppendChar);
            /* and now : seal the deal */
            sec.MakeReadOnly();


답변

나는 이것을 밖으로 버릴 것이다. 왜?

모든 문자열을 보안 문자열로 변경할 수 없으며 갑자기 애플리케이션이 “보안”됩니다. 보안 문자열은 문자열을 가능한 한 오랫동안 암호화하고 매우 짧은 시간 동안 만 해독하여 작업이 수행 된 후 메모리를 지우도록 설계되었습니다.

응용 프로그램 문자열 보안에 대해 걱정하기 전에 처리해야 할 몇 가지 디자인 수준 문제가있을 수 있습니다. 귀하가하려는 작업에 대한 추가 정보를 제공해 주시면 더 나은 도움을 드릴 수 있습니다.


답변

unsafe
{
    fixed(char* psz = password)
        return new SecureString(psz, password.Length);
}