2012-01-25 2 views
3

SecureString을 초기화하려고하는데 Char *가 필요합니다.C#에서 SecureString을 초기화하기 위해 Char [] 또는 String을 Char *로 변환하는 방법은 무엇입니까?

unsafe { 
    char[] c = { 'A', 'B', 'C', 'D' }; 
    char* pointer = &(c[0]); 
    SecureString sec = new SecureString(pointer, 4); 
} 

나는이 오류가있어 이것을 시도 : 나는 안전하지 않은 코드의 블록을하려고 노력

Error: You can only take the address of an unfixed expression inside of a fixed statement initializer

답변

4

왜 그냥 각 문자를 통해 루프 AppendChar를 사용할 수 있습니까?

string s = "Hello"; 
SecureString ss = new SecureString(); 

foreach(char c in s) ss.AppendChar(c); 
1

그들은 그 생성자를 사용하면 안된다고 말합니다.

이 작업을 수행해야합니다.

char[] chars = { 'A', 'B', 'C', 'D' }; 
SecureString sec = new SecureString(); 
foreach (var c in chars) { 
    sec.AppendChar(c); 
} 
0

허용되는 대답에 따르면 허용되는 방법은 루프와 AppendChar을 사용하는 것입니다.

public static SecureString FromClearString(this SecureString secureString, string clearString) 
{ 
    secureString.Clear(); 
    clearString.ToList().ForEach(secureString.AppendChar); 
    secureString.MakeReadOnly(); 
    return secureString; 
} 

다음과 같이 내가 그것을 사용, 예 :

var pwd = new SecureString(); 
await _security.LoginAsync("some.random.user", pwd.FromClearString("the.password"), Cts.Token); 
의 편의를 위해 나는 다음과 같은 확장 메서드를 만들었습니다
관련 문제