首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-03-11 
小妹请教RSA对XML加密部分机器报错疑问???我对一个XML进行加密,加密后解密,在部分机器报如下错误:请各位帮

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

热点排行