2009-07-29 6 views
0

내 코드에서 사용하는 대체 코드 인 보안 변수를 만들고 싶습니다. System.Security.SecureString을 사용하여 살펴 보았습니다. 사용자가이 암호를 찾지 못하도록하기 때문에 티켓 일 수 있습니다. 유일한 문제는 그것을 초기화하는 것입니다. 대부분의 경우 SecureString은 사용자 키 누르기로 최상 "설정"된 것처럼 보입니다. 나는 이것을 원하지 않는다. 내가 건너 왔어요 하나의 옵션은 다음과 같습니다읽기 전용으로 SecureString을 초기화하는 방법

만 문제는, char 배열 't', 'E', '의', 't'는 아마도 여전히 컴파일 후 메모리에 함께 포장되어있다

unsafe public static void Main() 
    { 
     SecureString testString; 
     // Define the string value to assign to a new secure string. 
     char[] chars = { 't', 'e', 's', 't' }; 

     // Instantiate a new secure string. 
     fixed(char* pChars = chars) 
     { 
     testString = new SecureString(pChars, chars.Length); 
     } 
     // Display secure string length. 
     Console.WriteLine("The length of the string is {0} characters.", 
         testString.Length); 
    } 
. 컴파일 타임 전에 SecureString의 값을 상수 값으로 설정하고 그 값을 스크램블 할 수있는 좋은 방법이 있습니까?

+1

달성하려는 작업은 무엇입니까? 일부 기능을 숨기려면 '비밀'암호를 저장 하시겠습니까? 코드가 유출되거나 발견 된 순간, 당신은 '보안'이 사라졌습니다! 더 나은 솔루션이지만 여전히 좋지는 않지만 앱을 가지고 있어야합니다. 집 전화. –

+0

(소스) 코드가 유출 될 필요는 없으며, 실행 파일의 배포만으로 충분합니다! 디 컴파일은 충분할 수도 있고 디버거를 통해 실행할 수도 있습니다. 신뢰할 수없는 사람에게 보내는 비밀은 더 이상 비밀이 아닙니다. – Kitsune

+0

이 루트는 파일에 x509certificate2를 작성하고 암호로 보호해야한다는 것입니다. 그런 다음 같은 암호를 사용하여 다시 읽습니다. – Nick

답변

0

chars의 모든 항목을 동적 메모리에서 값을 제거하기 위해 임의의 임의의 값으로 설정할 수 있습니다. 이 문자열은 여전히 ​​실행 파일에 있습니다.

관련 문제