2011-01-16 4 views
0

RSA 용 ASP.NET (.NET 4)을 사용하여 키를 생성하려고 할 때 RSACryptoServiceProvider가 잘못된 플래그를 지정한 경우 예외가 발생합니다.ASP.NET RSACryptoServiceProvider throws 잘못된 플래그가 지정되었습니다.

[CryptographicException : 유효하지 않은 플래그가 지정되었습니다. ] System.Security.Cryptography.CryptographicException.ThrowCryptographicException (INT32의 HR) +33 System.Security.Cryptography.Utils._GenerateKey (SafeProvHandle hProv, INT32는 추운, CspProviderFlags 플래그 INT32 키 사이즈, SafeKeyHandle & HKEY) +0 시스템. Security.Cryptography.Utils.GetKeyPairHelper (CspAlgorithmType는 keyType, CspParameters 파라미터 부울 randomKeyContainer, INT32 dwKeySize, SafeProvHandle & safeProvHandle, SafeKeyHandle & safeKeyHandle) 9,719,339 System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair() +89 에서는 System.Security.Cryptography .RSACryptoServiceProvider.ExportParameters (부울 includePrivateParameters) +38 System.Security.Cryptography.RSA

  var _cpsParameter = new CspParameters(); 
     _cpsParameter.Flags = CspProviderFlags.UseMachineKeyStore; 

     var rsaProvider = new RSACryptoServiceProvider(bitStrength, _cpsParameter); 

     string publicAndPrivateKeys = rsaProvider.ToXmlString(true); 
     string justPublicKey = rsaProvider.ToXmlString(false); 

어떤 생각 방법이 문제를 해결하기 위해 : (부울 includePrivateParameters)

+45 내가 RSA는이 코드를 사용하여 초기화를 .ToXmlString?

답변

0

"-"이름을 가진 키 컨테이너에 이미 내보낼 수없는 키가있을 수 있습니다 (이 경우 .NET은 새 키로 덮어 쓰지 않고 기존 키를 사용합니다).

var cspParameters = new CspParameters(); 
    cspParameters.Flags = CspProviderFlags.UseMachineKeyStore; 
    cspParameters.KeyContainerName = Guid.NewGuid().ToString(); 

    var rsaProvider = new RSACryptoServiceProvider(bitStrength, cspParameters); 

    string publicAndPrivateKeys = rsaProvider.ToXmlString(true); 
    string justPublicKey = rsaProvider.ToXmlString(false); 
: 그 차이를 만드는 경우

대신에이 코드를 시도하고 참조

관련 문제