어떻게 변환하기 String
에 SecureString
?
답변
당신은하지 않습니다. 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);
}