2011-01-12 121 views
1

当我将我的VS2008项目VS2010下面的代码:DSACryptoServiceProvider.EncriptionPrivateKey停止工作

 private static readonly byte[] EncriptionPrivateKey = { 
      0x07, 0x02, 0x00, 0x00, 
      0x00, 0x22, 0x00, 0x00, 
      0x44, 0x53, 0x53, 0x32, 
      0x00, 0x04, 0x00, 0x00, 
      .... 

     CspParameters csp = new CspParameters(13, null, null) 
      { Flags = CspProviderFlags.UseMachineKey}; 

     using (DSACryptoServiceProvider dsa = new DSACryptoServiceProvider(csp)) 
     { 
      dsa.ImportCspBlob(EncriptionPrivateKey); 

停止工作。 'ImportCspBlob'方法的执行抛出加密异常:

该参数不正确。

和MSDN在这种方法一无所知例外: http://msdn.microsoft.com/en-us/library/system.security.cryptography.dsacryptoserviceprovider.importcspblob.aspx

任何想法,为什么,以及如何解决?

非常感谢!

P.S.我仍然使用.NET 3.5框架

+0

关于这个问题的新东西? – Budda 2011-03-07 16:51:01

回答

0

诀窍是我从MSTest中启动了自动转换为.NET 4.0的代码,因此应用程序(和列出的源代码)在.NET 4.0下启动, .NET 4.0 ...

知道,让我找到问题的变通方法:

在原来的源代码:

CspParameters csp = new CspParameters(13, null, null) 
    { Flags = CspProviderFlags.UseMachineKey}; 

这是必要的,以消除那些标志分配......我我发现这些密钥描述离子:http://msdn.microsoft.com/en-us/library/system.security.cryptography.cspproviderflags.aspx但它不清楚它们是如何工作的以及它们实际上做了什么。