加密文本时出现C#RSA加密错误

加密文本时出现C#RSA加密错误,c#,cryptography,rsa,C#,Cryptography,Rsa,尝试使用RSA加密对某些文本进行加密时,出现以下错误: Error: System.Security.Cryptography.CryptographicException: 'The provided XML could not be read.' XmlException: There are multiple root elements. Line 1, position 33. 我不知道它指的是什么XML。我想用字符串存储键;不是XML文件 完整代码- public MainW

尝试使用RSA加密对某些文本进行加密时,出现以下错误:

Error: System.Security.Cryptography.CryptographicException: 'The provided XML could not be read.' XmlException: There are multiple root elements. Line 1, position 33.
我不知道它指的是什么XML。我想用字符串存储键;不是XML文件

完整代码-

    public MainWindow()
    {
        InitializeComponent();

        string publicKey = "<BitStrength>1024</BitStrength><RSAKeyValue><Modulus>zTzYeinwKx6t/uzDzc9yFLpVOuGRJbSY0GhBzF+HMscx/zXDvbfqYMLVn+AVY8NfcmSOPgv6fGgJx4Msuch8PM7lL/OoDoxQXctz72L2aIzPt3nWWOZ58EdDGQSMs9OqJ6TT/e8lfZ6pN0OqoAeqOM0ETZnffw7zgsgXVUqP2NU=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>";
        string privateKey = "<BitStrength>1024</BitStrength><RSAKeyValue><Modulus>zTzYeinwKx6t/uzDzc9yFLpVOuGRJbSY0GhBzF+HMscx/zXDvbfqYMLVn+AVY8NfcmSOPgv6fGgJx4Msuch8PM7lL/OoDoxQXctz72L2aIzPt3nWWOZ58EdDGQSMs9OqJ6TT/e8lfZ6pN0OqoAeqOM0ETZnffw7zgsgXVUqP2NU=</Modulus><Exponent>AQAB</Exponent><P>3BZXBWVYeI0cpP3zREEyLUPXi6ACNDAzzwyZJCf4rJVSj1XFKZMU+6NwzdxGgLUkdF1oipqKHt9bjr0j0khvTw==</P><Q>7royan9teQiS3BC/TzlprWgmlXKJ+vbFqVW5eMnq52/hNDL/adx8X7ROZraIRbsoMKvnmN8C5h4E+Wjlq4dMmw==</Q><DP>iCpeLp10LimIFmBz+L+pbq3xlpYppuZHt4sg2GjOhuBf0wSK1l0Ed2e4a/UjvY/U/RWpj09rswwX1mkY14ovKw==</DP><DQ>I+1jvwFUcV2n9HSUxhCG5fEBtYYaW+mdj8F1+0awEoqU4u014TGsih6xmeWolo33G3QTk78kSYuFBiASSIFBNw==</DQ><InverseQ>qtFDv8m2LVGiSV9DPhsNF/MrFJ8nYGJnFwShFDV7MOSYXdnnaRQalgMVtZBtEsuyJFbnmf8gUD61fyfqCIjYUQ==</InverseQ><D>s0ktyjoMhX59fK4Tthw7igPkJFWb2BZVT+ljYUcp8Z+0+z5aScb5xaEtwEWeKdIn9OQGpgkMvdSchl7+mSSb8Wn1KCj+VNRls49ltKODgCM1tdnm4VRb8yJxlKA4yyZt0GXEssx8tXFxH7H/mlqiYLvkM7pUAAXXr7+v6Alq4Vk=</D></RSAKeyValue>";

        MessageBox.Show(EncryptText("One day Trump will become President of the entire World!!! Trump gonna rule the entire Earth and there's nothing you can do about it!!",
            publicKey));
    }

    public string EncryptText(string data, string publicKey)
    {
        UnicodeEncoding byteConverter = new UnicodeEncoding();
        byte[] dataToEncrypt = byteConverter.GetBytes(data);

        byte[] encryptedData;
        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
        {
            rsa.FromXmlString(publicKey);
            encryptedData = rsa.Encrypt(dataToEncrypt, false);
        }

        return encryptedData.ToString();
    }

    public string DecryptData(string data, string privateKey)
    {
        byte[] dataToDecrypt = Encoding.ASCII.GetBytes(data); ;

        byte[] decryptedData;
        using (RSACryptoServiceProvider rsa = new RSACryptoServiceProvider())
        {
            rsa.FromXmlString(privateKey);
            decryptedData = rsa.Decrypt(dataToDecrypt, false);
        }

        UnicodeEncoding byteConverter = new UnicodeEncoding();
        return byteConverter.GetString(decryptedData);
    }
public主窗口()
{
初始化组件();
字符串publicKey=“1024zTzYeinwKx6t/UZDZC9YFLVOUGRJBSY0GHBZF+HMscx/zXDvbfqYMLVn+AVY8NfcmSOPgv6fGgJx4Msuch8PM7lL/OODOXQXXXXCTZ72L2AIZPT3NWOZ58EDDGMS9OQJ6T/E8LFZ6PN0OQOAEQOM0ETZNFW7ZGSVUQP2NU=AQAB”;
字符串privateKey="10月10日,中国政府发布了一份10月10日的研究报告,其中有一部分是关于中国的一个非政府武装力量(vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv6-vvvggg4-vvvvvvvvv6-vvvvv6-v6-v6-v6-v6-vvv6-vv6-v6-v6-vv6-v6-v6-v6-vvv6-v6-vvvvvv6-v6-vv6-v6-v6-v6-v6-vvvvv6-vvvvvv6-8-8-8-8-8-8-vvvvvvvvvvvvvv5EMNQ52/hNDL/ADX8X7ROZRAIRRBSOMKVNMN8C5H4.目前,中国的一个4级词汇(4)中的一个4级词汇(4)中的一个4级词汇(4)中的一个4级词汇(2)中的一个8级词汇(2)中的一个8级词汇(4)中的一个4级词汇(4)中的一个4级词汇(4)中的一个4级词汇(4)中的一级词汇(2级词汇(2)的意思是:1)的意思是:2级词汇(4级词汇(2)中的意思意思是:1)的意思是:1级词汇(4级文中的意思意思意思意思意思是:1)是(4级词汇(4级(1)中的意思意思意思意思意思意思意思意思是(1)是,意思是(1)是,意思意思意思意思意思意思意思意思意思是,意思是,意思是,意思是,意思是,意思是,意思是,意思是,意思是,意思是,意思是,意思是,意思是,意思是(1 0+Z5ASCB5X在9OQGPGK之间MvdSchl7+mSSb8Wn1KCj+VNRLS49LTKODGCM1TDNM4VRB8YJXLKA4YYZT0GXESSx8TXH7H/mlqiYLvkM7pUAAXXr7+v6Alq4Vk=“;
MessageBox.Show(EncryptText)(“有一天特朗普将成为全世界的总统!!!特朗普将统治整个地球,对此你无能为力!!”,
公钥);
}
公共字符串加密文本(字符串数据、字符串公钥)
{
Unicode编码字节转换器=新的Unicode编码();
byte[]dataToEncrypt=字节转换器.GetBytes(数据);
字节[]加密数据;
使用(rsacryptserviceprovider rsa=new rsacryptserviceprovider())
{
rsa.FromXmlString(公钥);
encryptedData=rsa.Encrypt(dataToEncrypt,false);
}
返回encryptedData.ToString();
}
公共字符串解密数据(字符串数据、字符串私钥)
{
byte[]dataToDecrypt=Encoding.ASCII.GetBytes(data);
字节[]解密数据;
使用(rsacryptserviceprovider rsa=new rsacryptserviceprovider())
{
rsa.FromXmlString(privateKey);
decryptedData=rsa.Decrypt(dataToDecrypt,false);
}
Unicode编码字节转换器=新的Unicode编码();
返回byteConverter.GetString(decryptedData);
}

请从键中删除
比特强度
,将显示正确的键

<RSAKeyValue>
<Modulus>zTzYeinwKx6t/uzDzc9yFLpVOuGRJbSY0GhBzF+HMscx/zXDvbfqYMLVn+AVY8NfcmSOPgv6fGgJx4Msuch8PM7lL/OoDoxQXctz72L2aIzPt3nWWOZ58EdDGQSMs9OqJ6TT/e8lfZ6pN0OqoAeqOM0ETZnffw7zgsgXVUqP2NU=</Modulus>
<Exponent>AQAB</Exponent>
</RSAKeyValue>

zTzYeinwKx6t/UZDZC9YFLVOUGRJBSY0GHBZF+HMscx/zXDvbfqYMLVn+AVY8NfcmSOPgv6fGgJx4Msuch8PM7lL/OODOXQXCTZ72L2AizPT3NWOZ58EDDGQSMS9OQJ6T/E8LFZ6PN0OQOAQOM0ETZNFW7ZGSGVUQP2NU=
AQAB

这可以帮助您解决错误的长度问题。

为什么要在密钥字符串中包含XML标记?密钥应该是XML的内部文本。请检查我的更新答案