读书人

小妹请问RSA对XML加密部分机器报错疑问

发布时间: 2012-03-11 18:15:39 作者: rapoo

小妹请教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)

我加密方法如下:

C# code
        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;        }

解密方法如下:
C# code
        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;        }


[解决办法]
可能你的代码问题 或者 你已经创建了对象而后面还有创建对象代码 换个变量名试试
http://blog.csdn.net/llwinnner/article/details/4011936
http://www.csharpwin.com/csharpspace/8761r456.shtml

读书人网 >C#

热点推荐