2009-12-16 11 views
2

내가 (WHO 않을 것) 암호로 내 RSA 개인 키를 보호하려는 실패하지만, 다음과 같은 C#을 실패간단한 사용

SecureString pw = new SecureString(); 
pw.AppendChar('x'); 
CspParameters prms = new CspParameters(); 
prms.KeyPassword = pw; 
RSACryptoServiceProvider crypto = new RSACryptoServiceProvider(prms); 
byte[] encrypted = crypto.Encrypt(Encoding.ASCII.GetBytes("encryptme"), true); 

을 ... CryptographicException로 : "잘못된 유형 지정 ". KeyPassword 할당을 꺼내면 제대로 작동합니다.

내가 뭘 잘못하고 있니?

답변

1

설정 CspParameters.KeyPasswordPP_KEYEXCHANGE_PIN (또는 PP_SIGNATURE_PIN)으로 CryptSetProvParam을 호출하는 것과 같습니다. 이 플래그는 기본 Microsoft crypto-service-provider (스마트 카드 기반 CSP와 함께 사용하기위한 것임)에서 지원되지 않습니다.

당신은

prms.Flags = CspProviderFlags.UseUserProtectedKey; 

을 설정 또는 대안 적으로, 비 영구적 키 쌍을 생성을 수출하고 암호 자신에서 파생 된 키를 암호화 시도 할 수 있습니다.

관련 문제