这段代码是否运行在Web Service, ASP.NET或者COM+平台上?如果是这样,问题应该出现在RSACryptoServiceProvider的构造函数这里。当您使用这个构造函数的时候,public/private keys被存放在User Profile中,由于性能的考虑,它是不会被Web Service, ASP.NET或者COM+加载。建议您使用包含CspParameters 参数的另外一个构造函数。这样您就使用了machine key store。 CspParameters CSPParam = new CspParameters(); CSPParam.Flags = CspProviderFlags.UseMachineKeyStore; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSPParam);您可以参阅下面的知识库文章:Q322371 PRB: Err Msg: CSP for This Implementation Could Not Be Acquired http://support.microsoft.com/support/kb/articles/q322/3/71.asp
重新注册ASP.NET组件,确保IIS已经开启并支持该组件
版本信息: Microsoft .NET Framework 版本:1.1.4322.2379; ASP.NET 版本:1.1.4322.2379 == 确认你的网站是asp.net 1.1
版本信息: Microsoft .NET Framework 版本:1.1.4322.2379; ASP.NET 版本:1.1.4322.2379 == 确认你的网站是asp.net 1.1
从错误信息看来应该是部署的服务器不支持加密服务的API
转 http://www.moon-soft.com/doc/37532.htm1. 现象 在ASP.NET的中,创建RSACryptoServiceProvider对象引发异常:System.Security.Cryptography.CryptographicException: 未能获取此实现的 CryptoAPI 加密服务提供程序(CSP)。并且发现,如果在web.config中配置<identity impersonate="false" userName="" password=""/>不会出现这个异常,而配置成<identity impersonate="true" userName="" password=""/>则会引发这个异常。这种状况在Windows 2000 + IIS5和Windows 2003 Server + IIS6的状况下都会发生。2. 原因 从现象来看,这是由于用户权限的问题,导致产生这个异常。在Windows2000 + IIS5环境下,ASP.NET在用户扮演前是ASPNET用户,扮演后默认的是IUSER_MACHINE账户,在Windows 2003 Server + IIS6环境下,用户扮演前的访问用户是IIS工作进程组IIS_WPG的成员(NT AUTHORITY\NETWORK SERVICE),扮演后默认的是IUSER_MACHINE账户。3. 解决 微软客户支持的网站里的一篇文章“PRB: "CSP for this implementation could not be acquired" CryptographicException error during instantiation”有对这个问题的详细解决方法。 http://support.microsoft.com/default.aspx?scid=kb;en-us;322371 附录: a. 在ASP.NET应用程序中使用身份模拟(Impersonation)(来自微软中国社区) http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/impersonation.mspx
CSPParam.Flags = CspProviderFlags.UseMachineKeyStore;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(CSPParam);您可以参阅下面的知识库文章:Q322371 PRB: Err Msg: CSP for This Implementation Could Not Be Acquired
http://support.microsoft.com/support/kb/articles/q322/3/71.asp
==
确认你的网站是asp.net 1.1
==
确认你的网站是asp.net 1.1
在ASP.NET的中,创建RSACryptoServiceProvider对象引发异常:System.Security.Cryptography.CryptographicException: 未能获取此实现的 CryptoAPI 加密服务提供程序(CSP)。并且发现,如果在web.config中配置<identity impersonate="false" userName="" password=""/>不会出现这个异常,而配置成<identity impersonate="true" userName="" password=""/>则会引发这个异常。这种状况在Windows 2000 + IIS5和Windows 2003 Server + IIS6的状况下都会发生。2. 原因
从现象来看,这是由于用户权限的问题,导致产生这个异常。在Windows2000 + IIS5环境下,ASP.NET在用户扮演前是ASPNET用户,扮演后默认的是IUSER_MACHINE账户,在Windows 2003 Server + IIS6环境下,用户扮演前的访问用户是IIS工作进程组IIS_WPG的成员(NT AUTHORITY\NETWORK SERVICE),扮演后默认的是IUSER_MACHINE账户。3. 解决
微软客户支持的网站里的一篇文章“PRB: "CSP for this implementation could not be acquired" CryptographicException error during instantiation”有对这个问题的详细解决方法。
http://support.microsoft.com/default.aspx?scid=kb;en-us;322371
附录:
a. 在ASP.NET应用程序中使用身份模拟(Impersonation)(来自微软中国社区)
http://www.microsoft.com/China/Community/program/originalarticles/TechDoc/impersonation.mspx