小妹请教RSA对XML加密部分机器报错疑问???
我对一个XML进行加密,加密后解密,在部分机器报如下错误:
请各位帮忙看看是哪里出问题!
2011/12/30 9:12:06: Exception Message:对象已存在。
Source:mscorlib
StacTrace: 在 System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)
在 System.Security.Cryptography.Utils._CreateCSP(CspParameters param, Boolean randomKeyContainer, SafeProvHandle& hProv)
在 System.Security.Cryptography.Utils.CreateProvHandle(CspParameters parameters, Boolean randomKeyContainer)
在 System.Security.Cryptography.Utils.GetKeyPairHelper(CspAlgorithmType keyType, CspParameters parameters, Boolean randomKeyContainer, Int32 dwKeySize, SafeProvHandle& safeProvHandle, SafeKeyHandle& safeKeyHandle)
在 System.Security.Cryptography.RSACryptoServiceProvider.GetKeyPair()
在 System.Security.Cryptography.RSACryptoServiceProvider..ctor(Int32 dwKeySize, CspParameters parameters, Boolean useDefaultKeySize)
在 System.Security.Cryptography.RSACryptoServiceProvider..ctor(CspParameters parameters)
我加密方法如下:
private XmlDocument EncryptXML(XmlDocument doc) { try { XmlElement xmlElemt; xmlElemt = doc.DocumentElement; CspParameters csp = new CspParameters(); csp.KeyContainerName = "abcde123"; csp.Flags = CspProviderFlags.UseMachineKeyStore; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); EncryptedXml xmlEnc = new EncryptedXml(doc); xmlEnc.AddKeyNameMapping("asyncKey", rsa); EncryptedData encXml = xmlEnc.Encrypt(xmlElemt, "asyncKey"); EncryptedXml.ReplaceElement(xmlElemt, encXml, false); } catch (Exception ex) { throw ex; } return doc; }
private XmlDocument DecryptXML(string filename) { XmlDocument doc = new XmlDocument(); try { doc.Load(filename);//加载加密后的xml文件 CspParameters csp = new CspParameters(); csp.KeyContainerName = "abcde123"; csp.Flags = CspProviderFlags.UseMachineKeyStore; RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(csp); EncryptedXml encXml = new EncryptedXml(doc); encXml.AddKeyNameMapping("asyncKey", rsa); encXml.DecryptDocument(); } catch (Exception ex) { throw ex; } return doc; }