--------------------
未能获取此实现的 CryptoAPI 加密服务提供程序 (CSP)。
......
-----------------------
搜索发现,这是由于.net输出到客户端是以匿名用户(IIS认证帐号:IUSER_XXX [注XXX为机器名])运行.处理RSA需要系统权限.在网上搜索了下,采用配置文件webconfig 配置
下面是RSA算法类.
---------------------------------------
Imports System
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO
Imports System.Web
Imports System.Web.Security
Imports System.Security.Principal
Imports System.Runtime.InteropServices 'import
Public Shared Function RSAEncrypt(ByVal DataToEncrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte()
Try
Dim RSA As New RSACryptoServiceProvider()
RSA.ImportParameters(RSAKeyInfo)
Return RSA.Encrypt(DataToEncrypt, DoOAEPPadding)
Catch e As CryptographicException
Throw e
Return Nothing
End Try
End Function 'RSAEncrypt
Public Shared Function RSADecrypt(ByVal DataToDecrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte()
Try
Dim RSA As New RSACryptoServiceProvider()
RSA.ImportParameters(RSAKeyInfo)
Return RSA.Decrypt(DataToDecrypt, DoOAEPPadding)
Catch e As CryptographicException
Throw e
Return Nothing
End Try
End Function 'RSADecrypt
''调用
dim newstr as string '需要加密的数据
Dim ByteConverter As New UnicodeEncoding()
Dim dataToEncrypt As Byte() = ByteConverter.GetBytes(newstr)
Dim encryptedData() As Byte
Dim RSA As New RSACryptoServiceProvider()
encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(False), False)
Label1.Text = String.Format("{0}", ByteConverter.GetString(encryptedData))
-----------------------------------------------------------
相信这种方法在winform中是不会出现这种情况。